input框的输入事件
要求:
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下)
- 中文输入法下不会触发onkeypress事件。
- 在没有真正被键入输入框的时候,keyCode与charCode都会是undefined,而which是0。
- 中文输入法下onkeydown的keyCode及which都是229,charCode=0,但onkeyup可以得到真正的keyCode。
- ctrl只会触发onkeydown事件。
- alt,capslock,shift只会触发onkeydown和onkeyup事件。
- 空格都会触发。
- 用onkeypress监听回车是不可取的,因为它根本不会触发。
- onkeypress谨慎使用,因为它监控的并不准确,但如果只是监控数字不用那么精确的话就可以。
- 事件的执行顺序依次是:onkeydown --> onkeypress --> oninput --> onkeyup。
对于ff和ie表现可能会不一样,具体需要再监控。
input框的输入事件相关推荐
- html页面input框输入不了,input框不能输入问题
input框不能输入问题 今天在写程序设计登录页面的时候遇到了一个问题:输入框不能输入! 就是我写着写着想测试一下功能,就发现输入框不能输入了.???还能出现这种问题??就很疑惑,然后就搜了搜无法输入 ...
- 让input框只输入英文
解决扫码枪在中文输入法时扫码冲突 扫码枪在扫完码时会自动回车,这时如果是中文输入法就会触发输入法联想,再加一个回车,那么input框输入的就成中文了.如果可以控制input框只能输入英文那就好了.cs ...
- html5div输入内容,将input框中输入内容显示在相应的div中【三种方法可选】
例题一枚:在input框中输入内容,会相应的显示在下面的div中的不同做法: #div{ width: 175px; height: 100px; margin: 20px 84px; border: ...
- html判断整数小数点后两位小数点,js控制input框只能输入数字和一位小数点且小数点后面只有两位小数...
js控制input框只能输入数字和一位小数点且小数点后面只有两位小数 js控制input框只能输入数字和一位小数点且小数点后面只有两位小数 212或 0.66; 过滤 00000,1.10,0.00 ...
- ios input框无法输入问题
/* ios input框无法输入问题 */ input{ -webkit-user-select:auto !important; } 转载于:https://www.cnblogs.com/liu ...
- VUE 表单input 框使用@blur事件
** VUE 表单input 框使用@blur事件 input 框失去焦点 ,便会触发定义的方法 form表单代码 <el-form-item label="身份证号码:" ...
- JS获取input框用户输入信息作为数组存储传输给后台数据库操作存储方法
JS获取input框用户输入信息作为数组存储传输给后台数据库操作存储方法 获取input框用户输入信息数组存储 var datas = {Id: idData.id,OrderDetailCode: ...
- uniapp开发微信小程序input框限制输入
input框输入手机号的约束 <input @input="onlyNum" class="inp" v-model="phone" ...
- 获取表单 input框中输入的值
html: <input type="text" value="请输入..." id="txt"/><button id= ...
最新文章
- 如何学习linux编程
- C和C++安全编码笔记:并发
- C++之typedef 小记
- 安全测试的基本原则有哪些?
- 通过PowerShell开源社区的Win32-OpenSSH来管理你的Windows服务器
- 《Raspberry Pi用户指南》——导读
- 基于MATLAB的面对对象编程(3)——事件和响应
- android监听通知消息 脚本,Bash玩转脚本4之搞一套完整的Android反编译与分包工具...
- MySQL级联复制(A-B-C) —log-slave-updates = 1
- 使用gdb和core dump迅速定位段错误
- 贝叶斯网的R实现( Bayesian networks in R)bnlearn(1)
- oracle常用的字符串函数,Oracle的常用字符函数实验展示
- static,inline,volatile的作用
- 没有电脑没有手机没有网络没有爱情——纪念我的电子科技大学九里堤校区大一生活
- opencv+ffmpeg+Qt h264录制
- 利用逻辑分析仪测定单片机延时函数时间
- LightGBM Python 软件包的基本演练.
- 腾讯产品总监曹菲:产品经理们,五年后,你会失业吗? 【上】
- layui导出全部和下载模板
- Dataload批量导入数据到EBS系统中(例子)--1019
热门文章
- 省市区json格式数据及异步请求json数据
- python科学计算主要学什么_以下哪些是python常用的科学计算库?_学小易找答案
- 33、HTML高频前端面试题
- excel中文件合并F9键
- 通信原理 | FFT/STFT 你真的学会了吗?
- My深度学习的总结记录
- 【微信开发者工具】at-rule or selector expectedcss(css-ruleorselectorexpected)
- 网络工程师面试题(面试必看)(3)
- oracle12c ora 12560,12C安装历险记----ORA-12560和ORA-12537的解决方案
- 函数的 柯里化和反柯里化