【问题标题】:How to execute change event on select when option change?选项更改时如何在选择时执行更改事件?
【发布时间】:2019-04-16 05:24:34
【问题描述】:

当我更改选项时,如何在 select 上执行 onchange 事件处理程序?

document.getElementById('selct').value=2;
<select id="selct" onchange="alert('change success')">
  <option value="0">val1</option>
  <option value="1">val2</option>
  <option value="2">val3</option>
  <option value="3">val4</option>
  <option value="4">val5</option>
  <option value="5">val6</option>
</select>

当我这样做时,结果是 val3,但 select 的 onchange 不起作用。 我该如何解决?

【问题讨论】:

标签: javascript dom-events


【解决方案1】:

使用 Javascript 以编程方式更改 value 不会触发 change 事件。要使其工作,您必须以编程方式触发事件。

var sel = document.getElementById('selct');
sel.value=2;
sel.onchange();

var sel = document.getElementById('selct');
sel.value = 2;
sel.onchange();
<select id="selct" onchange="alert('change success')">
  <option value="0">val1</option>
  <option value="1">val2</option>
  <option value="2">val3</option>
  <option value="3">val4</option>
  <option value="4">val5</option>
  <option value="5">val6</option>
</select>

来自MDN docs, change eventsselect 标记在以下情况下触发:

当用户明确提交更改时(例如,通过单击鼠标从 a 的下拉列表中选择一个值,从 的日期选择器中选择一个日期,在 的文件选择器中选择一个文件等);

参考:How can I trigger an onchange event manually?

【讨论】:

  • 我已经尝试过了,但没有成功,我得到了这个 eroor ====document.getElementById(...).onchange 不是函数
  • 获得相同的 eroor sel.onchange 不是函数 :(
  • @danial 检查 console.log(sel)
【解决方案2】:

这对我有用:

document.getElementById('selct').dispatchEvent(new Event('change'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 2021-08-24
    相关资源
    最近更新 更多