el-input输入框的一些限制

方法一:

通过设置type属性:type="number",style去掉后面的上下按钮,如下图:

<el-input v-model="" type="number" class="num-input" clearable />
 
<style>
.num-input input::-webkit-outer-spin-button,
.numinput input::-webkit-inner-spin-button {
    -webkit-appearance: none;
}
.num-input input[type="number"]{
    -moz-appearance: textfield;
}
.num-input input{
    border: none
}
</style>

在style中写当前页面的样式时使用scoped,此时需要使用::v-deep(vue2):deep()(vue3)

方法二:

通过绑定值限制的方式:v-model.number="aaa",这种方式会限制一般的数字,但是会影响maxlengt属性,并且e是可以输入的,一般情况可以使用,严格限制的话不建议使用

缺点:maxlength不生效,可以输入e,可以输入小数点

<el-input v-model.number="aaa"></el-input>

方法三:使用正则表达式oninput/οnkeyup(建议使用)

通过对value值进行正则限制:οnkeyup="value=value.replace(/[^\d]/g,' ')",绑定一个onkeyup监听事件,/[^\d]/g 是用来匹配所有非数字内容的正则表达式,将之替换成空字符串,这种方式不会影响任何属性,推荐使用

<el-input v-model="aaa" οnkeyup="value=value.replace(/[^\d]/g,'')"></el-input>

只允许输入数字(整数:小数点不能输入)

<input type="text" onkeyup="value=value.replace(/[^\d]/g,'')" >

允许输入小数(两位小数)

<input type="text" onkeyup="value=value.replace(/^\D*(\d*(?:.\d{0,2})?).*$/g, '$1')" >

允许输入小数(一位小数)

<input type="text" onkeyup="value=value.replace(/^\D*(\d*(?:.\d{0,1})?).*$/g, '$1')" >
//下面为输入框示例代码  只能输入正数且保留1位小数点
<el-input
  v-model="value"
  size="mini"
  oninput="
      this.value=this.value.replace(/[^\d.]/g,"")  //清除“数字”和“.”以外的字符
     .replace(/\.{2,}/g,".") // 只保留第一个. 清除多余的
     .replace(".","$#$").replace(/\./g,"").replace("$#$",".").replace(/^(\-)*(\d+)\.(\d).*$/,'$1$2.$3').replace(/^\./g,"")
     // 只能输入1个小数
     .replace(/^0+(\d)/, '') // 第一位0开头,0后面为数字,则过滤掉,取空
   "
/>

// (\d\d)部分就是增加保留小数点位数的表达式 我这里为保留两位小数
replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')

开头不能为0,且不能输入小数

<input type="text" onkeyup="value=value.replace(/[ \d]/g,'').replace(/ 0{1,}/g,'')" >

 只能输入汉字:

    <el-input maxlength="10" class="input" style="margin-left: 680px" 
              placeholder="资产名称" v-model.trim="inputName"
              onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
              @blur="inputName = $event.target.value"
    ></el-input>

终极方法

onkeypress="return( /[\d]/.test(String.fromCharCode(event.keyCode) ) )"

onkeypress 事件会在键盘按键被按下并释放一个键时发生。

提示:与 onkeypress 事件的关联的事件执行顺序:

  1. onkeydown
  2. onkeypress
  3. onkeyup

注意: 在所有浏览器中 onkeypress 事件只能监听字母和数字,不能监听一些特殊按键(ALT、CTRL、SHIFT、ESC、箭头等)。监听一个用户是否按下按键请使用 onkeydown 事件,所有浏览器都支持 onkeydown 事件。

既考虑了手动输入的,也考虑了粘贴

<input onKeyUp="value=value.replace(/[^\d]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" />

我们经常在表单的文本框中做一些验证处理,大家一般都是是限制那些具体要求的输入,而没有考虑到个别用户出于种种原因将文字粘贴到表单的文本域中,这样还是避免不了那些特殊的输入。

onbeforepaste顾名思义:在用户执行粘贴工作之前,进行的js操作。

附加:js剪切板应用clipboardData(window的子对象)对象:提供了对剪贴板的访问。 
三个方法 
1.ClearData(sDataFormat) 删除剪贴板中指定格式的数据。 
2.GetData(sDataFormat) 从剪贴板获取指定格式的数据。 
3.SetData(sDataFormat, sData) 给剪贴板赋予指定格式的数据,返回 true 表示操作成功。

附input标签事件

一、在Html中input标签的相关事件写法:

1、onfocus(常用)

input标签获取焦点事件

2、onblur(常用)

input失去焦点事件(触发条件:先获取焦点,再失去焦点触发)

3、onchange

input失去焦点并且它的value值发生变化时触发

4、oninput

input框输入过程中value值改变时实时触发,输入每一个字符都会触发

5、onclick

input标签type="button"时的点击事件

6、onkeydown

input框输入时键盘按钮按下事件

7、onkeyup

input框输入时键盘按钮抬起事件,触发onkeyup事件之前一定触发onkeydown事件

8、onselect

input标签内容选中时触发事件
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值