关于enter 自动提交的解决方法

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来改变函数在本来堆栈的顺序。

猜你喜欢

转载自baqidexiaoxuesheng.iteye.com/blog/2322170