关于enter 自动提交的解决办法
关于enter 自动提交的解决方法
因为form表单是默认按enter 键会自动提交的,如果我们需要在提交之前执行我们的逻辑就需要用到这段代码了
如果不需要提交就这样
问题解决到这里,得总结一下
一 ie下与firefox,chrome在处理onkeydown与onbsubmit机制不一样, ie是同步的,而firefox,chrome是异步的,通过一个阻塞的alert(1)就可以说明这个问题。
二 当想改变一个函数执行顺序时,包括一些浏览器自身的默认顺序时,可以通过setTimeout来改变函数在本来堆栈的顺序。
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来改变函数在本来堆栈的顺序。