1.问题描述
在input输入框输入一段文字之后,点击发送按钮会发现,只触发了失去焦点事件,按钮点击事件并没有被触发,当再次点击按钮的时候,事件才会被触发,这明显不是我们想要的,我们来看看怎么解决
2.代码
<body>
<div id="divContainer">
<input class="inTest" autofocus/>
<button class="btn-send">发送</button>
</div>
<script type="text/javascript">
window.onload = function(){
var inputText = document.querySelector(".inTest");
var btn = document.querySelector(".btn-send");
inputText.onblur = function(){
alert("-----blur----");
};
btn.onclick = function(){
alert("-----click----");
}
}
</script>
</body>
3.效果图
4.解决办法
由于失去焦点事件发生的顺序在点击事件之前,这样我预期的触发点击事件的效果就达不到,为了达到触发点击事件,我在失去焦点时间里面加了setTimeout()方法,让失去焦点事件延迟300毫秒再触发,这样就调换了失去焦点和按钮点击事件的顺序,做到我所期待的效果
5.解决之后的代码
<body>
<div id="divContainer">
<input class="inTest" autofocus/>
<button class="btn-send">发送</button>
</div>
<script type="text/javascript">
window.onload = function(){
var inputText = document.querySelector(".inTest");
var btn = document.querySelector(".btn-send");
inputText.onblur = function(){
var timer = setTimeout(function(){
alert("-----blur----");
},300)
};
btn.onclick = function(){
alert("-----click----");
}
}
</script>
</body>
6.解决之后的效果图