在选定的索引更改上选择标记更改事件调用

时间:2013-12-31 00:33:46

标签: javascript

我有一个select标签,在change上有一个eventListener。

现在我还有两个不同的按钮可以改变它,使用:

      (selectTag).selectedIndex++;

以上是我想要实现的目标,但它不会在change上调用我的函数回调。

我该怎么做呢?欢迎其他方法。

我更喜欢纯JS解决方案,(请不要请JJery)。

1 个答案:

答案 0 :(得分:3)

在按钮上调用点击处理程序时,只需trigger 更改事件:

var select = document.querySelector("select");
var button = document.querySelector("button")

select.addEventListener("change", function (e) {
  alert(e.target.value)
});

button.addEventListener("click", function () {
  var event;

  try {
    event = new Event("change")
  } catch (e) {
    event =  document.createEvent("Event");
    event.initEvent("change", true, false);
  }

  select.selectedIndex++;
  select.dispatchEvent(event);
});

JS Bin

更新:我已经在IE 10中修改了它的工作,可能还有其他一些。