键盘事件介绍——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 只能输入正整数验证并限制长度相关推荐

  1. 控制HTML Input只能输入数字和小数点

    转:https://www.cnblogs.com/esion/p/3342866.html 本文介绍三种控制在中只允许输入数字和小数点的方案. 方案1:通过JavaScript代码实现. JavaS ...

  2. INPUT只能输入数字

    input只能输入数字: (只能输入数字,并且输入的值不能大于99),但是这样有个问题,就是当输入非数字字符时,输入框中所有的字符都会被清除 <input type="text&quo ...

  3. 移动端手机网站限制input只能输入数字

    <input type="tel" name="num" value="1" maxlength="8" auto ...

  4. jquery 验证小数点后几位_(亲测可用)input只能输入数字或小数点后几位

    webapp是基于html5网页版的app,经常会结合app成为混合模式 hybrid app,也就是 app小应用打开 访问的其实是网页,这种方式非常不错,解决了app更新的难题, 所以这个时候要求 ...

  5. 正则表达式 只能输入正整数、只能输入数字

    1. 只能输入正整数: var zz2 = new RegExp("^[0-9]*[1-9][0-9]*$");// zz2 必须为正整数 console.log(zz2.test ...

  6. 用js使得输入框input只能输入数字

    JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input οnkeyup="this.value=this.value.replace(/\D/g,'' ...

  7. 正则:element ui input只能输入数字及数字后两位

    1:使用表单校验 <el-inputv-model="param.value"placeholder="起始备用金"/>value: [{ requ ...

  8. js 只准输入数字_js 限制input只能输入数字

    onKeyUp="this.value=this.value.replace(/[^\.\d]/g,'');if(this.value.split('.').length>2){thi ...

  9. 微信小程序:正则 input只能输入数字

    <input type="number" auto-focus focus='{{focus}}' value="{{value}}" bindinput ...

最新文章

  1. java treeset 重复,关于 TreeSet 为什么我这样写,还有是有重复的记录啊啊啊啊
  2. RHEL 5服务篇—部署DNS域名解析服务(一)BIND软件
  3. 解决sourceTree的git clone 报SSH密钥认证失败的问题
  4. 中国科学院数学与系统科学研究院关于2019年招收硕士研究生复试规程
  5. linux下搭建python机器学习环境
  6. JavaScript中函数的上下文——this
  7. tab点击一个按钮切换排序_Axure8原型教程:实现Tab选项切换
  8. CMS(内容管理系统)
  9. 金蝶KIS财务软件如何查看去年的账套
  10. Java中的跨站请求伪造
  11. 【分布式机器学习】基本知识
  12. 仿9GAG制作过程(三)
  13. Mars3D中 popup 弹窗问题汇总
  14. 网站流量统计(免费的)
  15. 为图片赋值红色或绿色的伪彩 用python、EmguCV、 OpenCvSharp实现
  16. MySQL数据清理有技巧,这么破
  17. vue尚品汇商城项目-day04【29.加入购物车操作(难点)】
  18. 冷门绝技,让你的Origin坐标轴“断掉”
  19. (附源码)计算机毕业设计SSM疫情医疗物资管理系统
  20. 2011 模拟 c语言 本科(含答案)(第二届“国信蓝点杯”全国软件专业人才设计与开发大赛)...

热门文章

  1. Gym - 101911B Glider 贪心
  2. 织梦漏洞修复大全(使用织梦建站,有许多漏洞)现在整理了一些
  3. 军犬舆情每日热点:京津冀8省市雾霾笼罩;人人网2000万美元卖身
  4. dijkstra(迪杰克斯拉算法)
  5. 实验室-NO.2 python 读取3D obj文件 + 特征点显示 + 凹凸点分类
  6. 计算机组装与维修教学反思,计算机组装维护课程教学反思.doc
  7. 花生增仓大涨,豆粕认购翻倍,鸡蛋09-01季节性正套2022.5.16
  8. 新零售业背景下零售业实体店的经营战略
  9. 04: 云计算产品、华为云 、 ECS云服务器管理
  10. 语音增强 理论与实践 pdf_语音识别工具ESPnet代码结构