企业网站定制开发<input> 实现输入框只能输入数字(个人认为最好的)

需求背景:

企业网站定制开发在项目中会遇到表单填写的时候在input企业网站定制开发中输入纯数字的情况,企业网站定制开发这个时候需要我们在输企业网站定制开发入框对用户的输入做一些限制,企业网站定制开发我在网上查了几个方案,我都尝试了一下,优缺点也标注了一下。仅供大家参考:

方案一:使用JS限制 input 输入框只能输入纯数字

  1. onkeyup = "value=value.replace(/[^\d]/g,'')"

使用 onkeyup 事件
缺点: 在中文输入法状态下,输入汉字之后直接回车,会直接输入字母,所以:不推荐

  1. onchange = "value=value.replace(/[^\d]/g,'')"

使用 onchange 事件
缺点:在输入内容后,只有 input 丧失焦点时才会得到结果,并不能在输入时就做出响应

3、oninput = "value=value.replace(/[^\d]/g,'')"

使用 oninput事件完美的解决了以上两种问题,他可以即时做出响应,
缺点:当你先输入数字,切输入法中文,开始输入,之前输入的数字会一个个的都消失,直到内容为空

4、最后,我发现了一个功能实现最好的:同时使用onkeyup="this.value=this.value.replace(/\D/g,'')" + onafterpaste="this.value=this.value.replace(/\D/g,'')"

上面出现的3中情况均完美解决
缺点: 唯一不太行的就是 输入英文或中文是输入框都会频闪一下键盘输入的东西,但还是 可以接受的

方案二:VUE使用a-input-number组件限制 input 输入框只能输入纯数字

  1. 利用a-input-number组件controls属性api去控制不显示增减数值的按钮

缺点:当你输入中文或英文时,只有在输入框失去焦点 的时候才会去校验数字

方案三:VUE使用a-input组件利用type=number限制 input 输入框只能输入纯数字

当input 使用了type='number’后,会出现这个增减数值的按钮,这里建议使用css去控制不显示:

<a-input type='number' />// css部分 需要注意浏览器兼容问题<style lang="css" scoped>input::-webkit-outer-spin-button,input::-webkit-inner-spin-button {  -webkit-appearance: none;  appearance: none;  margin: 0;}/* 火狐 */input {  -moz-appearance: textfield;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

缺点:就是你输入中文或者英文他会直接拼接一个 'e' 或 'E',所以:‘不推荐

总结:最最最后,个人感觉使用JS的方案四比较合适

onkeyup="this.value=this.value.replace(/\D/g,'')" + onafterpaste="this.value=this.value.replace(/\D/g,'')"

<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
  • 1

浅浅扩展一下:

JS判断只能是数字和小数点

  1. 文本框只能输入数字代码(小数点也不能输入)

<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">

  1. 只能输入数字,能输小数点.

<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
<input name=txt1 onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}">

  1. 数字和小数点方法二
<input   type="text"   t_value=""   o_value=""   onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"   onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"   onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 只能输入字母和汉字

<input onkeyup="value=value.replace(/[\d]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))"maxlength=10 name="Numbers">

  1. 只能输入英文字母和数字,不能输入中文

<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')">

  1. 只能输入数字和英文

<input onKeyUp="value=value.replace(/[^\d|chun]/g,'')">

  1. 小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:

<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">

  1. 小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:

<input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')">

  1. 只能是数字和小数点和加减乘除

onkeypress="return event.keyCode>=4&&event.keyCode<=57"

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发