class="java">document.onkeydown = function(e) {
var e = e || event;
if(e.keyCode == 13) {
setTimeout(function(){
var keyWord = $('#keyWord').val();
alert(keyWord);
setHistory(keyWord);
},0);
}
}
因为form表单是默认按enter 键会自动提交的,如果我们需要在提交之前执行我们的逻辑就需要用到这段代码了
如果不需要提交就这样
document.onkeydown = function(e) {
var e = e || event;
if(e.keyCode == 13) {
setTimeout(function(){
alert("自己的逻辑");
},0);
e.preventDefault ? e.preventDefault() : (e.returnValue = false);
}
}
问题解决到这里,得总结一下
一 ie下与firefox,chrome在处理onkeydown与onbsubmit机制不一样, ie是
同步的,而firefox,chrome是
异步的,通过一个阻塞的alert(1)就可以说明这个问题。
二 当想改变一个函数执行顺序时,包括一些浏览器自身的默认顺序时,可以通过setTimeout来改变函数在本来
堆栈的顺序。