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

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

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

onkeydown:是在用户按下任何键盘键(包括系统按钮,如箭头键和功能键)时发生。

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

Letters: A - Z (uppercase and lowercase)

Numerals: 0 - 9

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

System: ESC, SPACEBAR, ENTER

如果是输入Ctrl+C、Delete之类的,就不会产生该事件。特别注意:对于中文没有效果。获取所按的键ASCII码(即大小写字母有分),可使用event.keyCode,要转换也可以对event.keyCode进行操作。事件产生时value还没有包含所输入的字符。如果要取消输入,可以使用event.keyCode = 0,也可以使用event.returnValue = false。想获取控制键的情况,则使用event.altKey、altLeft、ctrlKey、ctrlLeft、shiftKey、shiftLeft。当按住键盘不放时,会持续产生该事件。这样看来,它只能处理中规中矩的事情。如输入只能大写,输入只能数字(但粘贴功能还会破坏这些规则)。

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处理鼠标粘贴、拖入这两个动作就可以了。

onkeypress 、onkeyup 与onkeydown三者之间的区别相关推荐

  1. keydown,keypress,keyup三者之间的区别:

    最近看了Javascript高级教程中对过滤输入的介绍,想实现比如电话号码中不能包好非数值的字符,而相应文本中插入字符的操作是keypress事件,所以就想通过阻止这个事件的默认事件行为来阻止这个事件 ...

  2. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  3. TCP三次握手、四次挥手、socket,tcp,http三者之间的区别和原理

    接着上一篇文章叙述: TCP/IP连接(在互联网的通信中,永远是客户端主动连接到服务端): 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协 ...

  4. String String.valueof() toString三者之间的区别~

    String  String.valueof()  toString三者之间的区别~ (String )强制类型转换,使用这种方法时,需要注意的是类型必须能转成String类型.因此最好用instan ...

  5. String StringBuilder StringBuffer三者之间的区别~~~

    String StringBuilder  StringBuffer三者之间的区别~~~ String是字符串常量,它是典型的immutable类,被声明final class,所有的属性都是fina ...

  6. Python id(obj), ==, is 三者之间的区别

    不多说,直接上代码,看看三者的区别吧. 代码: # 例子 a = [1, 2, 3] b=a; print(a) print(b) print(a is b) print(b is a) print( ...

  7. .NET、C#和ASP.NET三者之间的区别与联系

    .NET.C#和ASP.NET三者之间的区别与联系 1..net(dot net) .net是一个平台,抽象的平台概念. 实现形式是库:①定义了基本的类型(通用类型系统CTS,common type ...

  8. 【待续】C#.Net 关键词清理 Fields Property Attribute Const三者之间的区别与联系

    C#.Net 关键词清理 Fields Property Attribute 三者之间的区别与联系 不少人一直对这三个词容易混淆视听,不知道他们之间到底什么联系. 这可能跟翻译的中文有很大的关系. 首 ...

  9. 光端机、光纤收发器与光猫三者之间的区别介绍

    现如今,在当下的网络通信项目中,光端机.光纤收发器.光猫这几款产品可以说是应用非常广泛,也是备受安防人的推崇,那么,对于这三者之间的区别你是否清楚呢?接下来就由飞畅科技的小编来为大家详细介绍下光端机. ...

最新文章

  1. 【AI产品】产品小姐姐分析抖音背后的计算机视觉技术
  2. 一份MyBaits框架PDF文档,阿里架构师直言,Java程序员快收藏吧
  3. 算法竞赛入门与进阶 (二)单调队列、单调栈
  4. 高端服务器CPU详细图解
  5. CCNA实验(9) -- Frame Relay
  6. jquery:validate的例子{转载}
  7. python连接mysql_Python 连接mysql与impala
  8. 大数据学习笔记42:Hive - 分桶表
  9. 慕课网 机器学习基础、任务、分类等笔记
  10. SpringAOP底层API之代理对象执行流程
  11. java俄罗斯方块代码_俄罗斯方块java源代码提供
  12. 面对5400万抑郁症患者,这600位志愿者“树洞”打算用AI拯救他们
  13. 计算机电脑整蛊图片,双击就蓝屏 男子愚人节整蛊怒砸笔记本
  14. 深入理解Windows域概念
  15. Tiled2Unity报错处理办法
  16. 1、JVM之走进类加载
  17. pc端点击图片放大效果
  18. 基于SpringBoot+Mybatis的SaaS平台搭建
  19. 《鸟哥的Linux私房菜》精要 持续更新。。。
  20. 医学检验质量管理和控制计算机的,基层临床医学检验质量管理现状及其优化对策...

热门文章

  1. HTML如何设置幻灯片大小和位置,javascript – 动态调整skitter幻灯片图像大小
  2. inet aton在java_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton inet_ntop
  3. SpringBoot开发微信公众号_回复文本信息功能
  4. ESP32 + ESP-IDF |GPIO 02 - 使用高分辨率定时器,每100ms时间间隔驱动外部两个LED灯闪烁
  5. 命令行登陆北邮校园网
  6. 汇编语言答案(王爽)第三版
  7. Java入门必背100条
  8. 11 款超赞的 MySQL 图形化工具,好用!
  9. 拟凸函数和凸函数的区别
  10. 论文写作 18: 审稿意见回复要直截了当