input框focus,blur,change,input,ke
2019-02-22 本文已影响0人
小汤猿
<div id="app">
<input type="text" id="txt"/>
<p id="show"></p>
</div>
<script >
let result = []
txt.addEventListener('keyup',function (event){
result.push({
event:'keyup',
value:this.value,
code:event.keyCode,
eventThis:this
})
console.log(result)
})
txt.addEventListener('keydown',function (event){
result.push({
event:'keydown',
value:this.value,
code:event.keyCode,
eventThis:this
})
console.log(result)
})
txt.addEventListener('input',function (event){
result.push({
event:'input',
value:this.value,
code:event.keyCode,
eventThis:this
})
console.log(result)
})
txt.addEventListener('change',function (event){
result.push({
event:'change',
value:this.value,
code:event.keyCode,
eventThis:this
})
console.log(result)
})
txt.addEventListener('focus',function (event){
result.push({
event:'focus',
value:this.value,
code:event.keyCode,
eventThis:this
})
console.log(result)
})
txt.addEventListener('blur',function (event){
result.push({
event:'blur',
value:this.value,
code:event.keyCode,
eventThis:this
})
console.log(result)
})
输出结果如下:
Screenshot from 2019-02-22 11-14-33.png
从图中可以看出如下结论:
-
keydown事件发生时,输入值并没有发生变化,所以keydown可用于阻止某些输入字符的显示。
-
input事件发生时,无法获取到keyCode值,并且紧随在keydown事件之后。
-
keyup事件最后发生,一次键盘敲入事件彻底完成。
-
change事件只会发生在输入完成后,也就是输入框失去焦点之前。
-
输入完成后观察
当用户完成所有的输入时,这时候必定会发生blur事件,只有这时才会触发change,所以可用blur与change监听用户输入是否完成,输入框的验证多半发生在此时。 -
输入事件流
输入框发生的事件流程依次为focus、keydown、input、keyup、change与blur,见下图所示。