input 的blur事件之后button的onclick事件不执行解决方案
最近发现网页程序中有个BUG,就是在input标签输入框中输入完数据后,直接点击“取消” 按钮的时候、出现网页崩死的情况;
经过小主酸菜我,各种方法的尝试后,找到一个初步可以解决的方案,在这里分享给大家:
首先,分析一下原因:input标签直接离开后,触发的事件是input标签的blur事件;然后直接去点击了取消按钮,执行button事件。
由于js是单线程的所以就出现了问题,现在需要让blur先执行验证,然后在触发click事件。
所以:咱们的解决方案就是,要让他blur事件先验证了,然后再执行button的onclick事件,让js一步一步的来;
给button的onclick事件写一个推迟执行的方法、利用setTimeout();
实例代码如下:
<!--<input type="reset" onclick="BackToMainPage()" value="取消" class="reset tf" id="btnCancel" /> 这是原来的取消按钮的代码,下图为改善后。--> <input type="reset" value="取消" class="reset tf" id="btnCancel" /> $("#btnCancel").mousedown( function (e) { setTimeout('BackToMainPage()', 100); });
写的不太好,如有其它问题,请指教。