键盘事件介绍——onKeyPress-输入字母和数字、onKeyUp-放开任何按键、onKeyDown-按下任何按键 el-input 只能输入正整数验证并限制长度
键盘事件介绍——onKeyPress-输入字母和数字、onKeyUp-放开任何按键、onKeyDown-按下任何按键 & el-input 只能输入正整数验证并限制长度
1、onKeyPress-输入中
在用户按下并放开任何字母数字键时发生,并不是每个按键都会触发这个事件。系统按钮(例如:箭头键和功能键)无法得到识别。
2、onKeyUp-输入后
在用户放开任何先前按下的键盘键时发生。 onKeyUp 是所有按键都弹起时被调用,调用的次数是按键的个数。
3、onKeyDown-输入前
在用户按下任何键盘键(包括系统按钮,如箭头键和功能键)时发生。、
4、示例
<input type="text"onkeydown = "console.log('onkeydown')"onkeyup="console.log('onkeyup')"onkeypress="console.log('onkeypress')">
运行结果在控制台输出,我们来测试一下
1、当只输入一个字符的时候
2、多个字符同时输入,也就是中间没有停顿,上一个字符还未弹起时输入下一个字符。
5、总结
通过 onKeyDown 事件可以改变用户是按了哪个键,而 onKeyPress 事件则是在输入流进入系统后触发的,但输入流暂未被系统处理,此时已经不能改变输入流 了,onKeyUp 则是输入流被系统处理后发生的。
6、实例
推荐用法—— el-input 只能输入正整数验证并限制长度
字母e在js中属于数字,所以一般的正则匹配 \d 是拦不住字母e 的。
正确写法为:
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
具体实例
<el-row><el-col :span="8" class='name-label'>模型编号:</el-col><el-col :span="16" class='input-label'><el-input :disabled="false" v-model="editObj[editObj.objName].LANDMARK3D" onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))" oninput="if(value.length>7)value=value.slice(0,7)" type="text" placeholder="请输入7位模型编号"></el-input></el-col>
</el-row>
6.1、el-input 只能输入数字
输入框中限制通常有三种处理方法
第一种:设置type属性(不推荐)
设置type属性为number,text等等,此方法输入框的后面会有不必要样式出现
<el-input type="number"></el-input>
第二种:在属性中添加onkeyup或者oninput进行正则判断
onkeyup,oninput,onchange各有好坏,在这里,推荐onkeyup,在要求不是太高的系统中可以这样使用.
字母e在js中属于数字,所以一般的正则匹配 \d 是拦不住字母e 的
1
<el-input v-model="form" onkeyup="value=value.replace(/[^\d]/g,0)">
</el-input>
2
<el-input v-model="form" οninput="value=value.replace(/[^0-9.]/g,'')"
</el-input>
参考写法
<el-input onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
</el-input>
以上写法在谷歌以及最新版本火狐浏览器中没问题,但是较旧版本中的火狐浏览器中会发现无法输入任何字符,属于兼容性bug吧。
可以选用以下写法,通过正则匹配非数字的全部置为空,限制输入字符大小,也可以拦住字母e:
<input type="text" oninput="if(value > 99 || value < 0 ){value = ''}" onkeyup="value=value.replace(/[^\d]/g,'');" >
第三种:通过监听事件监听,对于一些特殊要求的输入框可以采用此方法
当输入完毕后检查整段输入值的规则是否符合,如果不符合就设置为空。
因为不知道用户中途会不会输入英文字母,汉字,特殊字符等等不规则字符。
采用第二种方法就会难以判断字符的格式,最后用户确认时说不定会报错。
以手机号码为例(其他格式都一样,都只是换一下正则表达式罢了)
<el-inputv-model="form.telephone"placeholder="请输入11位手机号"@change="confirmTelephone">
</el-input>
<script>methods:{confirmTelephone() {if (!/^1[0-9]{10}$/.test(this.form.telephone))this.form.telephone = '';},}
</script>
elementUI中el-input输入数字且保留指定小数位
<el-input type="text" placeholder="请输入保留一位小数的数字" class="user-input user-name" v-model="userValue" oninput="if(isNaN(value)) { value = parseFloat(value) } if(value.indexOf('.')>0){value=value.slice(0,value.indexOf('.')+2)}" ></el-input>
6.2、输入框只能输入正整数
<template><div class="app"><!-- 添加@input事件 --><el-input v-model="num" type="text" @input="changeInput" /></div>
</template>
<script>
export default {data() {return {num: ''}},methods: {changeInput() {var pattern = /^[1-9][0-9]*$/ // 正整数的正则表达式// 不符合正整数时if (!pattern.test(this.num)) {// input 框绑定的内容为空this.num = ''}}}
}
</script>
键盘事件介绍——onKeyPress-输入字母和数字、onKeyUp-放开任何按键、onKeyDown-按下任何按键 el-input 只能输入正整数验证并限制长度相关推荐
- 控制HTML Input只能输入数字和小数点
转:https://www.cnblogs.com/esion/p/3342866.html 本文介绍三种控制在中只允许输入数字和小数点的方案. 方案1:通过JavaScript代码实现. JavaS ...
- INPUT只能输入数字
input只能输入数字: (只能输入数字,并且输入的值不能大于99),但是这样有个问题,就是当输入非数字字符时,输入框中所有的字符都会被清除 <input type="text&quo ...
- 移动端手机网站限制input只能输入数字
<input type="tel" name="num" value="1" maxlength="8" auto ...
- jquery 验证小数点后几位_(亲测可用)input只能输入数字或小数点后几位
webapp是基于html5网页版的app,经常会结合app成为混合模式 hybrid app,也就是 app小应用打开 访问的其实是网页,这种方式非常不错,解决了app更新的难题, 所以这个时候要求 ...
- 正则表达式 只能输入正整数、只能输入数字
1. 只能输入正整数: var zz2 = new RegExp("^[0-9]*[1-9][0-9]*$");// zz2 必须为正整数 console.log(zz2.test ...
- 用js使得输入框input只能输入数字
JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input οnkeyup="this.value=this.value.replace(/\D/g,'' ...
- 正则:element ui input只能输入数字及数字后两位
1:使用表单校验 <el-inputv-model="param.value"placeholder="起始备用金"/>value: [{ requ ...
- js 只准输入数字_js 限制input只能输入数字
onKeyUp="this.value=this.value.replace(/[^\.\d]/g,'');if(this.value.split('.').length>2){thi ...
- 微信小程序:正则 input只能输入数字
<input type="number" auto-focus focus='{{focus}}' value="{{value}}" bindinput ...
最新文章
- java treeset 重复,关于 TreeSet 为什么我这样写,还有是有重复的记录啊啊啊啊
- RHEL 5服务篇—部署DNS域名解析服务(一)BIND软件
- 解决sourceTree的git clone 报SSH密钥认证失败的问题
- 中国科学院数学与系统科学研究院关于2019年招收硕士研究生复试规程
- linux下搭建python机器学习环境
- JavaScript中函数的上下文——this
- tab点击一个按钮切换排序_Axure8原型教程:实现Tab选项切换
- CMS(内容管理系统)
- 金蝶KIS财务软件如何查看去年的账套
- Java中的跨站请求伪造
- 【分布式机器学习】基本知识
- 仿9GAG制作过程(三)
- Mars3D中 popup 弹窗问题汇总
- 网站流量统计(免费的)
- 为图片赋值红色或绿色的伪彩 用python、EmguCV、 OpenCvSharp实现
- MySQL数据清理有技巧,这么破
- vue尚品汇商城项目-day04【29.加入购物车操作(难点)】
- 冷门绝技,让你的Origin坐标轴“断掉”
- (附源码)计算机毕业设计SSM疫情医疗物资管理系统
- 2011 模拟 c语言 本科(含答案)(第二届“国信蓝点杯”全国软件专业人才设计与开发大赛)...
热门文章
- Gym - 101911B Glider 贪心
- 织梦漏洞修复大全(使用织梦建站,有许多漏洞)现在整理了一些
- 军犬舆情每日热点:京津冀8省市雾霾笼罩;人人网2000万美元卖身
- dijkstra(迪杰克斯拉算法)
- 实验室-NO.2 python 读取3D obj文件 + 特征点显示 + 凹凸点分类
- 计算机组装与维修教学反思,计算机组装维护课程教学反思.doc
- 花生增仓大涨,豆粕认购翻倍,鸡蛋09-01季节性正套2022.5.16
- 新零售业背景下零售业实体店的经营战略
- 04: 云计算产品、华为云 、 ECS云服务器管理
- 语音增强 理论与实践 pdf_语音识别工具ESPnet代码结构