首页 > 解决方案 > 没有为下拉菜单调用 onChange 函数

问题描述

我有一个按钮,单击该按钮会将下拉菜单重置为其默认选项。

我有一个下拉菜单的 onchange 事件监听器。单击按钮时未触发事件侦听器。

代码

<select id="my_select">
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
</select>
<div id="reset">reset</div>
$("#reset").on("click", function () {
document.getElementById('my_select').selectedIndex = 0;
});
$("#my_select").change(function(){
alert("Hi");
});

上面的更改代码在单击 x 时不会触发,而在手动更改时会触发。我希望它适用于 document.getElementById('Typess').selectedIndex = 1; 也是。如何使这项工作?

标签: javascriptjqueryhtmlonclickonchange

解决方案


触发该事件change是因为用户对该元素进行了更改。

另一种方法是手动触发该事件,如下所示:

let $typess = $("#Typess")
$(".x").click(function(event) {
  document.getElementById('Typess').selectedIndex = 1;
  $typess.trigger("change");
})

$typess.on('change', function(event) {
  console.log("Changed");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="Typess">
<option>A</option>
<option>B</option>
</select>
<p>
<button class="x">Click me!</button>


推荐阅读