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

当从另一个函数更改下拉列表值时调用Javascript onchange函数,javascript,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

我有一个下拉框

<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"
}

一个
两个
三
函数设置值(val)
{
var-temp=val;
}
函数另一个_函数()
{
document.getElementById(“drp”).value=“两个”
}
当我从另一个函数
drp
设置为“2”时,我想调用
setValue()
。根据代码中关于如何从JavaScript库设置下拉值的说明,我编写了另一个函数。是否可以在
setValue
函数中捕获
onchange
事件


当从另一个函数的下拉框中设置两个值时,我想调用setValue函数。我在JavaScript库中的代码集下拉值中编写了另一个expanation函数。那么,是否有可能在设置值函数中捕捉到更改事件?

据我所知,您希望能够在不触发设置值的情况下设置值

我会这样做:

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;
}

这将删除事件处理程序,设置值,然后恢复事件处理程序。

只需更改另一个函数,如下所示

function another_function()
{
    document.getElementById("drp").value="two"
    setValue(document.getElementById("drp").value);
}

正如您所发现的,
change
事件并不总是由某些元素中的所有更改触发。特别是,触发事件的通常只是鼠标和键盘的交互。无论何时更改值,都必须手动“触发”:

function another_function()
{
    var drp = document.getElementById("drp");
    drp.value="two";
    drp.onchange(); // Make sure the change event is triggered
}

正如我所说,我的下拉值是从JavaScript库中设置的,并且在库中编写了泛型代码,因此我无法编辑它。@Hkachhia我在理解您的意思时遇到了一点困难。好的,我已经明白了。当下拉值将从另一个函数更改时,我想调用onchange函数。或者我想在更改另一个函数的下拉列表值时捕获事件,您的意思是像
drp.onchange()
,它会触发
setValue
函数吗?当下拉列表值更改时,它会自动调用我得到了您的观点,但在项目中我使用了Javascript库,这个库可以在HTML控件中设置值。这是一个通用代码。@Hkachhia您使用的是什么库?我们已经为我们的项目创建了自己的javascript库