场景:input输入框绑定onblur事件,input输入框的确认按钮绑定onclick事件。在点击确认按钮的的同时,input也失去了焦点,所以会触发onblur事件,并且onblur会优先于onclick执行。这就会导致按钮的onclick事件无法正确执行,解决办法有两种:
1.给onblur加settimeout, 然后onclick中cleartimeout。也就是说让onblur延迟一段时间再执行,在这一段时间内onclick会正常执行,并且onclick中的cleartimeout会停止onblur的执行。
var timer;
inp.onblur = function() {
timer = setTimeout(function() {
//onblur事件要执行的代码
some code;
}, 120);
};
btn.onclick = function() {
clearTimeout(timer);
//onclick事件要执行的代码
some code;
};
2.将onclick替换为onmousedown,
inp.onblur = function() {
//onblur事件要执行的代码
some code;
};
btn.onmousedown = function() {
//onclick事件要执行的代码
some code;
};