今天写一个检测input输入内容的进行不同处理的demo,习惯用oninput事件绑定,然后发现oninput不能识别Enter键,故改用onkeypress,但发现无法区分标点逗号,无法实时监控中文输入,然后改用onkeydown,通过检查keyCode的值进行实时监测,虽然又出现其他问题,但还能处理。查看了一些资料, 来总结一些文本输入相关的事件;
oninput 是HTML5
引入的标准事件,IE9支持,不支持功能键输入;
可通过 'oninput' in document.createElement('input')
检测浏览器是否支持
onkeypress,onkeydown,onkeyup 是键盘事件,有keyCode 等属性;onkeypress
: 在按下并放开任何字母数字键时触发,功能键不能响应,自然也就不能区别中英文标点,字母的大小写;onkeydown
: 在按下任意键盘键时触发;onkeyup
: 在松开之前按下的键时触发;
HTML:
中文和中文标点符号不会触发事件
console.log(event.keyCode);
console.log(this.value); //this.value不能获取最后输入的那个字符;
}
input.onkeydown = function(){
console.log(event); //按任意键都会触发
console.log(event.keyCode); //<a href="https://www.jb51.cc/tag/zhongwenbiaodian/" target="_blank" class="keywords">中文标点</a>符号的时候触发的keyCode 码都是229
console.log(this.value); //完整
}
//onkeyup同onkeydown;
</code></pre>
onchange,onpropertychange
onchange
:在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效
onpropertychange
:不用考虑是否失去焦点,不管js操作还是键盘鼠标手动操作,只要HTML元素属性发生改变即可立即捕获到。遗憾的是,onpropertychange为IE专属的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。