我有一个下拉框
<select id="drp" onchange="setValue(this.value)">
<option value="one">One</option>
<option value="two">Two</option>
<option value="three">Three</option>
</select>
function setValue(val)
{
var temp=val;
}
function another_function()
{
document.getElementById("drp").value="two"
}
当我将drp
设置为&#34;两个&#34;从函数another_function
开始,我想调用setValue()
。我在代码中解释了如何从JavaScript库中设置下拉值,从而写了another_function
。是否可以在onchange
函数中捕获setValue
事件。
当在另一个函数的下拉框中设置两个值时,我想调用setValue函数。我实际上在我的代码集下拉值中从JavaScript库中编写了另一个来自扩展的函数。那么可以在setValue函数中捕获更改事件吗?
答案 0 :(得分:1)
如您所知,change
事件并非总是由某些元素的所有更改触发。特别是,它通常只是触发事件的鼠标和键盘交互。无论您在何处更改值,都必须手动“触发”它:
function another_function()
{
var drp = document.getElementById("drp");
drp.value="two";
drp.onchange(); // Make sure the change event is triggered
}
答案 1 :(得分:0)
据我了解,您希望能够在不触发setValue
的情况下设置值。
我会这样做:
function setValue(val)
{
var temp=val;
}
function another_function()
{
var drp = document.getElementById("drp");
var oldOnChange = drp.onchange;
drp.onchange = function() {};
drp.value = "two";
drp.onchange = oldOnChange;
}
这将删除事件处理程序,设置值,然后恢复事件处理程序。
答案 2 :(得分:-1)
只需更改下面的another_function
即可function another_function()
{
document.getElementById("drp").value="two"
setValue(document.getElementById("drp").value);
}