onkeypress 、onkeyup 与onkeydown三者之间的区别

onkeypress 、onkeyup 与onkeydown三者之间的区别onkeypress 是在用户按下并放开任何字母数字键时发生

大家好,欢迎来到IT知识分享网。

onkeypress:是在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别;onkeyup:是在用户放开任何先前按下的键盘键时发生;onkeydown:是在用户按下任何…

onkeypress:是在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别。

onkeyup:是在用户放开任何先前按下的键盘键时发生。

onkeypress:能够产生该事件的字符为:

Letters: A – Z (uppercase and lowercase)

Numerals: 0 – 9

Symbols: ! @ # $ % ^ & * ( ) _ – + = < [ ] { } , . / ? \ | ‘ ` ” ~

System: ESC, SPACEBAR, ENTER

onkeydown:任何按键都能产生该事件,即使按一下Ctrl键,也是激发该事件,用输入法输入中文时,每输入一个编码都产生一个事件,多得让人受不了,并且获得到的keyCode却是229。其获取的是键盘的扫描码(即大小写字母不分),可使用event.keyCode,但不能使用event.keyCode来修改。(但这又是个例外:if (event.keyCode === 13) event.keyCode = 9;)事件产生时value还没有包含所输入的字符。如果要取消输入,不能使用event.keyCode = 0这种方式,但可以使用event.returnValue = false。当按住键盘不放时,会持续产生该事件。
 

onkeyup:任何按键都能产生该事件,即使按一下Ctrl键,也是激发该事件,用输入法输入中文时,每输入一个编码都产生一个事件,虽然也没办法获取汉字,但keyCode还好是编码。其获取的是键盘的扫描码(即大小写字母不分),可使用event.keyCode,但不能使用event.keyCode来修改。事件产生时value已经包含所输入的字符了。event.keyCode = 0 与 event.returnValue = false都不能取消该事件。当按住键盘不放时,不会持续产生该事件。只有最后放开,才产生。 
 

我的目的是限制用户输入的长度(特别是中文),看了这三个事件,都没有一个方便的。有一种观点:长度验证不必在输入时进行,只要在光标离开或提交时验证,其实这不是最理想的,试想一下,一个输入框,用户心血来潮地输入了一大堆东西,然后提交,这时系统才告诉他不能输入这么多,这是个糟糕的体验。

另外我也看到一种处理方法:在输入框的onkeypress、onkeyup、onblur、onchange事件中全部加上超长取消的处理。感觉太多了,只要onkeyup体现即时控制,onchange处理鼠标粘贴、拖入这两个动作就可以了。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127770.html

(0)
上一篇 2025-09-05 14:15
下一篇 2025-09-05 14:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信