【发布时间】:2011-02-07 15:13:44
【问题描述】:
出于奇怪的原因,我必须通过模拟鼠标和按键事件来更改下拉框中的选定元素,而不是通过 e.selectedIndex。
我尝试了以下方法:
//e = the dropdown
e.focus();
//my custom function to fire mouse events. This opens the dropdown.
fireMouseEvent("mousedown", e);
//firing the key press, tried it via keydown, keypress and keyup. Nothing works.
var evt = e.ownerDocument.createEvent("KeyEvents");
evt.initKeyEvent("keydown", true, true, null, false, false, false, false, 40, 0);
evt.initKeyEvent("keypress", true, true, null, false, false, false, false, 40, 0);
evt.initKeyEvent("keyup", true, true, null, false, false, false, false, 40, 40);
e.dispatchEvent(evt);
我做错了什么还是这不可能?
谢谢。
【问题讨论】:
-
确实很奇怪的原因。愿意解释一下,以便我们建议替代方案吗? :)
-
好像可以设置selectedIndex,然后触发需要的事件。
-
如果您使用的是 chrome,请查看此内容(解释为什么无法完成):stackoverflow.com/questions/1897333/…
-
它是一个firefox插件,需要改变selectbox选中的值。似乎有与选择框相关的事件在设置 selectedIndex 时不会触发。由于这是一个附加组件,源页面中的 javascript 是受保护的,我不能调用 onchange 或其他任何东西(它至少不起作用)。
-
@Wes 如果你这样做
fireMouseEvent("change", e);不工作吗?顺便说一句,使用@通知人们您发布了新评论,否则他们不会看到它..
标签: javascript events drop-down-menu keypress