我想按下Enter按钮运行js功能.在IE,Chrome和Opera中,一切都很好用,但我在Safari中遇到了错误(如下所述).
我需要一个纯粹的Javascript解决方案,而不是jQuery.
这是功能:
function pressSearch(e) {
if (typeof e == 'undefined' && window.event) {
e = window.event;
}
var charCode = (e.which) ? e.which :
((e.charCode) ? e.charCode :
((e.keyCode) ? e.keyCode : 0));
if (charCode == 13) {
document.getElementById('enterSearch').click();
}
}
Run Code Online (Sandbox Code Playgroud)
这是HTML:
<input type="text" id="searchKey" onkeypress="pressSearch(event)">
<div id="enterSearch">Search</div> // This is the "button"
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
// Safari
TypeError: 'undefined' is not a function
(evaluating 'getElementById('enterSearch').click()')
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:我修复了Mozilla Firefox错误.
lqc*_*lqc 18
如果你看一下HTML DOM Level 2 Specification,那么这个click()函数只是定义了HTMLInputElement,所以虽然不是非常用户友好的Safari不需要实现它.
触发现代浏览器事件的正确方法是在DOM Level 3事件中:
// First create an event
var click_ev = document.createEvent("MouseEvents");
// initialize the event
click_ev.initEvent("click", true /* bubble */, true /* cancelable */);
// trigger the event
document.getElementById("someElement").dispatchEvent(click_ev);
Run Code Online (Sandbox Code Playgroud)
这是适用于Chrome,Safari,Firefox和IE9的jsfiddle:http://jsfiddle.net/y5yW9/6/