【发布时间】:2013-01-04 09:17:22
【问题描述】:
我正在尝试“功能检测”IE 在旁边有按钮元素的输入框中按 Enter 时的行为(当它们不在表单元素中时)。
我说的是 IE 的行为,因为没有其他人在输入聚焦时按下回车键时在下一个按钮上触发单击事件。
第一个 awnser 描述 IE 为何会这样运行的相关问题: IE bug triggers click for 2 buttons?
JS-Fiddle 我尝试通过 jQuery.Event 和 .trigger 模拟按键: http://jsfiddle.net/DbVrn/
上述 js-fiddle 在 IE 中的行为:
- 打开页面时,输入获得焦点,然后我们尝试模拟按下回车键。
- 模拟的回车键什么都不做,因此输入保持焦点和红色。
- 如果您在输入焦点集中时手动按 Enter,按钮将变为焦点并变为绿色。
我目前尝试检测此功能时遇到的问题是:
$("input").trigger(jQuery.Event("keypress", { which: 13 }));
实际上与输入焦点时手动按下回车键的作用不同。
我怎样才能成功模拟回车键,以便我可以对此行为进行测试? 或者有其他方法可以测试这种行为吗?
编辑: 更新了标题以更清楚地说明这需要通过 javascript 进行测试,并且测试需要在 IE 8 到 10 版本中工作。除非其他人可以提供一种方法对此进行测试,我将得出结论,我需要使用用户代理嗅探来查看浏览器是否为 IE,并据此选择代码路径。
【问题讨论】:
-
为什么检测这一点很重要?背景是什么?
-
我需要检测到这一点,以便我可以添加一个事件,如果
e.which === 13如果输入行为类似,我可以添加一个执行e.stopPropagation()的事件。以前用过if ($.browser.msie) { ... },但$.browser不再是jQuery 的一部分了.. -
如果它触发点击下一步按钮怎么办?除非它是一个提交按钮,但你不应该首先使用表单之外的按钮..也许我错过了什么? :)
-
我正在开发一个应用程序框架和控件,并在例如使用
-
如果你想检查 IE 你总是可以使用
window.navigator.appName
标签: javascript jquery html internet-explorer