当从另一个函数更改下拉值时,调用Javascript onchange函数

时间:2015-12-24 08:21:27

标签: javascript

我有一个下拉框

<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函数中捕获更改事件吗?

3 个答案:

答案 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);
}