要求:

input框只能输入数字。

问题:

只判断e.keyCode的情况下,在中文输入法中出现了e.keyCode均为229的情况,不论输入数字还是其他。

解决:

修改input框的type为number,但会出现默认样式,并且并不能真的限制数字。(在中文输入法下还是能输入中文)

1. 中文输入法

在中文打出的字母没有真正的键入input框的时候是会触发事件的,但再点击回车d不会被输入input框。

2. 英文输入法

输入d之后并没有显示,但是出现了奇怪的现象,onkeypress事件的keyCode却显示的很奇怪,它识别成了数字键盘上的4。

input框有默认样式,遂换方法。

不过这里的input框type为number的时候,复制粘贴也是不会显示中文的,问题只在未键入时会触发。

2. 采用正则:

在代码里拦截将非数字替换为空。

text.value = text.value.replace(/[^\d]/g,'');

但后来发现这样不能输入符号,所以换成了:

text.value = text.value.replace(/[^-\d]/g,'');

那么来看看这次的反应:

中文输入法下,onkeydown的keyCode还是229。

空格之后没有被输入:

中文输入法下输入1:我点击的是右边小键盘的1,down和up事件都识别对了,但press却识别成了字母上面的1。

这次点击字母上面的1:就全都是49,识别对了。

试试特殊键:

回车不会触发oninput事件:

alt:只有down和up事件

空格:

tab键:按下后输入框失去焦点并且只触发了down事件。

capslock:就是切换大小写那个按键,也只有down和up事件。

shift:

结论:(chrome下)

  1. 中文输入法下不会触发onkeypress事件。
  2. 在没有真正被键入输入框的时候,keyCode与charCode都会是undefined,而which是0。
  3. 中文输入法下onkeydown的keyCode及which都是229,charCode=0,但onkeyup可以得到真正的keyCode。
  4. ctrl只会触发onkeydown事件。
  5. alt,capslock,shift只会触发onkeydown和onkeyup事件。
  6. 空格都会触发。
  7. 用onkeypress监听回车是不可取的,因为它根本不会触发。
  8. onkeypress谨慎使用,因为它监控的并不准确,但如果只是监控数字不用那么精确的话就可以。
  9. 事件的执行顺序依次是:onkeydown --> onkeypress --> oninput --> onkeyup。

对于ff和ie表现可能会不一样,具体需要再监控。

input框的输入事件相关推荐

  1. html页面input框输入不了,input框不能输入问题

    input框不能输入问题 今天在写程序设计登录页面的时候遇到了一个问题:输入框不能输入! 就是我写着写着想测试一下功能,就发现输入框不能输入了.???还能出现这种问题??就很疑惑,然后就搜了搜无法输入 ...

  2. 让input框只输入英文

    解决扫码枪在中文输入法时扫码冲突 扫码枪在扫完码时会自动回车,这时如果是中文输入法就会触发输入法联想,再加一个回车,那么input框输入的就成中文了.如果可以控制input框只能输入英文那就好了.cs ...

  3. html5div输入内容,将input框中输入内容显示在相应的div中【三种方法可选】

    例题一枚:在input框中输入内容,会相应的显示在下面的div中的不同做法: #div{ width: 175px; height: 100px; margin: 20px 84px; border: ...

  4. html判断整数小数点后两位小数点,js控制input框只能输入数字和一位小数点且小数点后面只有两位小数...

    js控制input框只能输入数字和一位小数点且小数点后面只有两位小数 js控制input框只能输入数字和一位小数点且小数点后面只有两位小数 212或 0.66; 过滤 00000,1.10,0.00 ...

  5. ios input框无法输入问题

    /* ios input框无法输入问题 */ input{ -webkit-user-select:auto !important; } 转载于:https://www.cnblogs.com/liu ...

  6. VUE 表单input 框使用@blur事件

    ** VUE 表单input 框使用@blur事件 input 框失去焦点 ,便会触发定义的方法 form表单代码 <el-form-item label="身份证号码:" ...

  7. JS获取input框用户输入信息作为数组存储传输给后台数据库操作存储方法

    JS获取input框用户输入信息作为数组存储传输给后台数据库操作存储方法 获取input框用户输入信息数组存储 var datas = {Id: idData.id,OrderDetailCode: ...

  8. uniapp开发微信小程序input框限制输入

    input框输入手机号的约束 <input @input="onlyNum" class="inp" v-model="phone" ...

  9. 获取表单 input框中输入的值

    html: <input type="text" value="请输入..." id="txt"/><button id= ...

最新文章

  1. 如何学习linux编程
  2. C和C++安全编码笔记:并发
  3. C++之typedef 小记
  4. 安全测试的基本原则有哪些?
  5. 通过PowerShell开源社区的Win32-OpenSSH来管理你的Windows服务器
  6. 《Raspberry Pi用户指南》——导读
  7. 基于MATLAB的面对对象编程(3)——事件和响应
  8. android监听通知消息 脚本,Bash玩转脚本4之搞一套完整的Android反编译与分包工具...
  9. MySQL级联复制(A-B-C) —log-slave-updates = 1
  10. 使用gdb和core dump迅速定位段错误
  11. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(1)
  12. oracle常用的字符串函数,Oracle的常用字符函数实验展示
  13. static,inline,volatile的作用
  14. 没有电脑没有手机没有网络没有爱情——纪念我的电子科技大学九里堤校区大一生活
  15. opencv+ffmpeg+Qt h264录制
  16. 利用逻辑分析仪测定单片机延时函数时间
  17. LightGBM Python 软件包的基本演练.
  18. 腾讯产品总监曹菲:产品经理们,五年后,你会失业吗? 【上】
  19. layui导出全部和下载模板
  20. Dataload批量导入数据到EBS系统中(例子)--1019

热门文章

  1. 省市区json格式数据及异步请求json数据
  2. python科学计算主要学什么_以下哪些是python常用的科学计算库?_学小易找答案
  3. 33、HTML高频前端面试题
  4. excel中文件合并F9键
  5. 通信原理 | FFT/STFT 你真的学会了吗?
  6. My深度学习的总结记录
  7. 【微信开发者工具】at-rule or selector expectedcss(css-ruleorselectorexpected)
  8. 网络工程师面试题(面试必看)(3)
  9. oracle12c ora 12560,12C安装历险记----ORA-12560和ORA-12537的解决方案
  10. 函数的 柯里化和反柯里化