Elementui el-input 输入框校验以及表单校验_elementui input校验-程序员宅基地

技术标签: elementUI  前端  vue.js  javascript  

一. 常用的 element-ui el-input 输入框

1. 过滤字母e,在js中属于数字,但是正则匹配 \d 是拦不住字母e 的
<el-input type="number" placeholder="请输入" min="1" onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode || event.which))) || event.which === 8" v-model.number="count"></el-input>
2. 只能输入正整数
<el-input type="number" placeholder="请输入" min="1" oninput ="value=value.replace(/[^\d]/g,'')"  v-model.number="count"></el-input>
3. 只允许输入数字和小数 / 数字和空格
oninput ="value=value.replace(/[^0-9.]/g,'')"
oninput ="value=value.replace(/^[\d\s]+$/g,'')"

4. 只允许输入正整数且不能以0开头

方法-<el-input
  v-model="scope.row.weight"
  oninput="value = Number(value) || 0"
>
方法二:
<el-input
  v-model="scope.row.weight"
  oninput="value=value.replace(/\D|^0/g, '')"
>
方法三:
<el-input
  v-model="scope.row.weight"
  oninput="value=value.replace(/[^\d]|^[0]/g, '')"
>
4. 允许输入小数点后几位
// 保留一位小数
oninput="if(isNaN(value)) { value = parseFloat(value) } if(value.indexOf('.')>0){value=value.slice(0,value.indexOf('.')+2)}" 
 
// 若需要保留N位小数,则把2 改为 1 + n即可
5. 设置范围,最大值,最小值
<el-input min="0" max="100" type="number" @input="numberChange($event, 100)" @change="numberChange($event, 100)" onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode || event.which))) || event.which === 8" v-model.number="count"></el-input> 

numberChange (val, max) {
    
   this.$nextTick(() => {
    
      this.count = Math.min(parseInt(val), max)
    })
}
6. form 表单中校验输入框只能输入数字和两位小数
rules: {
    
        giveHour: [
          {
     required: true, message: '请输入客户退费金额', trigger: 'blur' },
          {
     pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入正确额格式,可保留两位小数' }
        ]
      }

7. 禁止 / 只允许 输入中文

onkeyup="this.value=this.value.replace(/[\u4E00-\u9FA5]/g,'')"
onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"

8. 只允许输入数字和英文

<el-input
	 v-model.trim="form.userNumber"
	 placeholder="请输入用户编号"
	 clearable
	 onkeyup="this.value=this.value.replace(/[^\w]/g,'')"
></el-input>

9. 禁止输入特殊字符

<el-input oninput="this.value=this.value.replace(/[^u4e00-u9fa5w]/g,'')"></el-input>

10. 只允许输入英文

<el-input oninput = "value=value.replace(/[^\a-\z\A-\Z]/g,'')"></el-input>

11. 常见表单校验

校验方法可以封装到 util.js 里面

// utils.js

// 全局函数
export function validateMobile(str) {
    
  // 检查手机号码格式
  return /^((13[0-9])|(14[5-9])|(15([0-3]|[5-9]))|(16[6-7])|(17[1-8])|(18[0-9])|(19[1|3])|(19[5|6])|(19[8|9]))\d{8}$/.test(
    str,
  );
}

export function validateEmail(str) {
    
  // 检查邮箱格式
  return /^([A-Za-z0-9_\-.])+@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,4})$/.test(str);
}

export function validateBankCard(str) {
    
  // 检查银行卡
  return /^[1-9]\d{9,29}$/.test(str);
}


export function validatePhone(str) {
    
  // 检查电话格式
  return /^(0\d{2,4}-)?\d{8}$/.test(str);
}

export function validateQQ(str) {
    
  // 检查QQ格式
  return /^[1-9][0-9]{4,}$/.test(str);
}

// 检查验证码格式
export function validateSmsCode(str) {
    
  return /^\d4$/.test(str);
}
// 校验 URL
export function validURL(url) {
    
  const reg =
    /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
  return reg.test(url)
}

// 校验特殊字符
export function specialCharacter(str) {
    
  const reg = new RegExp(
    // eslint-disable-next-line quotes
    "[`~!@#$^&*()=|{}':;',\\[\\]<>《》/?~!@#¥……&*()——|{}【】‘;:”“'。,、? ]"
  )
  return reg.test(str)
}

12. 输入非数字组合(登录账号6-16位)

// 非纯数字非纯字母 /^(?![0-9]+$)[0-9A-Za-z|a-zA-Z]{6,16}$/
    let userNameReg = /^(?![0-9]+$)[0-9A-Za-z|a-zA-Z]{6,16}$/;
      if (!userNameReg.test(form.userName)) {
    
        this.$message.warning('请输入6-16位的非纯数字登录账号~');
        return false;
      }

13. 只允许输入中文,英文,数字 / 空格 / 小数点

<el-input oninput = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')"></el-input>
<el-input oninput = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')"></el-input>
<el-input oninput = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g,'')"></el-input>

14. 空格校验

// 去除所有的空格:
<el-input oninput = "value=value.replace(/\s*/g,"")"></el-input>

// 去除两头的空格:
方法一:<el-input oninput = "value=value.replace(/^\s*|\s*$/g,"")"></el-input>
方法二:<el-input v-model.trim=""></el-input>

// 去除左侧的空格:
<el-input oninput = "value=value.replace(/^\s*/g,"")"></el-input>
  
// 去除右侧的空格:
<el-input oninput = "value=value.replace(/(\s*$)/g,"")"></el-input>


Tips: 最近测试给提了个bug,window 系统电脑,使用 oninput 方法进行输入框正则校验,如果疯狂进行输入的话会出现当前输入框的双向绑定失效,导致输入框无法正常输入值。这时候推荐使用 @input 方法可以避免这个方法,还有一个办法是失焦的时候重新进行一次赋值操作也可以解决。mac系统没有出现这个问题…

持续更新中,欢迎大家留言交流!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44980732/article/details/115219944

智能推荐

NBA2K22 李景亮面补-程序员宅基地

文章浏览阅读202次。NBA2K22 李景亮面补。

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame 解决方法_settingwithcopywarning: a value is trying to be se-程序员宅基地

文章浏览阅读2.5w次,点赞33次,收藏29次。1、首先展示下遇到的问题截图2、然后跟着这个错误的报错信息,点开下面链接有兴趣研究可以点开https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy蹩脚英语看半天没看明白,转战为自己研究3、简单代码复现问题~~~df = pd.DataFrame(np.random.randint(1,10,(4,5)),columns=["A._settingwithcopywarning: a value is trying to be set on a copy of a slice fro

s7-200 smart 运动控制_西门子s7-200smart脉冲输出控制伺服程序-程序员宅基地

文章浏览阅读5.7k次,点赞5次,收藏8次。需求:1-使用PLC发送脉冲控制伺服驱动器,驱动伺服电机,带动与齿轮带连接的伸缩杆定位;要求:1-位置可调;2-速度可调; 3-显示位置、速度状态;4-断电位置保持。一、资料查看1- S7-200 SMART CPU 提供了三种开环运动控制方法:运动控制向导,PTO(脉冲串输出)及PWM(脉宽调制);通过PROFINET连接V90实现基本定位控制从STEP 7-Micro/WIN SMART V2.4 和 S7-200 SMART PLC固件版本 V2.4开始增加了 PROFINET通..._西门子s7-200smart脉冲输出控制伺服程序

关于印发《测绘地理信息质量管理办法》的通知-程序员宅基地

文章浏览阅读1k次。关于印发《测绘地理信息质量管理办法》的通知来源: 国家测绘地理信息局国土测绘司 时间:2015-07-02 14:59:41 【大 中 小】国测国发〔2015〕17号各省、自治区、直辖市、计划单列市测绘地理信息行政主管部门,新疆生产建设兵团测绘地理信息主管部门:《测绘地理信息质量管理办法》已经国家测绘地理信息局局务会议审议通过,现予印发,请认真贯彻执行。经商国家质量监督检验检疫总局同意,1997_测绘地理信息质量管理办法

只需十四步:从零开始掌握Python机器学习(附资源)_python机器学习赵涓涓-程序员宅基地

文章浏览阅读211次。Python 可以说是现在最流行的机器学习语言,而且你也能在网上找到大量的资源。你现在也在考虑从 Python 入门机器学习吗?本教程或许能帮你成功上手,从 0 到 1 掌握 Python 机器学习,至于后面再从 1 到 100 变成机器学习专家,就要看你自己的努力了。本教程原文分为两个部分,机器之心在本文中将其进行了整合,原文可参阅:suo.im/KUWgl 和 suo.im/96wD3。本教程..._python机器学习赵涓涓

实时增量备份工具(rsync –daemon + inotify tools)-程序员宅基地

文章浏览阅读713次,点赞15次,收藏9次。实时增量备份工具(rsync –daemon + inotify tools)

随便推点

Trex--高性能压测的dream tools-程序员宅基地

文章浏览阅读1.8k次。Trex 数据面基于DPDK实现,通过json-rpc的方式对外暴露控制接口,client端支持CLI/PYTHON SDK/Gui三种方式,对程序员而言,python sdk肯定是首选,基于python sdk,包个自动化压测工具,自动为每个版本提供各种场景的性能测试数据还是挺爽的。“简单的有状态”,比如对同个五元组,先通过SYN报文建连接,再持续打一段时间的ACK报文,最终发RST/SYN报文,trex的stream间可以有先后依赖关系,通过多条stream即可支持。领取,关注我持续更新哦!_trex

数据结构初阶——环形链表-程序员宅基地

文章浏览阅读480次。哈哈哈~~其实也就是带环的链表啦~~或者是这样:因此,环形链表有个特性,就是没有 tail,指针一旦进入环形部分,就是死循环,永远走不出来。_环形链表

信用卡新颖的攻击方式,黑客可非接触式卡进行交易-程序员宅基地

文章浏览阅读172次。网络安全研究人员披露了一种新颖的攻击方式,它可能使黑客欺骗销售点终端以使其与受害者的万事达卡非接触式卡进行交易,同时认为该卡是Visa卡。该研究报告是由国内知名网络安全组织东方联盟研究人员发表的,该研究报告是建立在去年9月进行的一项详细研究的基础上的,该研究涉及PIN旁路攻击,使不良行为者可以利用受害者的被盗或丢失的启用Visa EMV的信用卡来制造高价值在不知道卡PIN的情况下进行购买,甚至欺骗终端接受未经认证的离线卡交易。研究人员表示:“黑客可以将其与先前对Visa的攻击结合使用,从而绕过万

Java设计模式之行为型:状态模式_java中状态设计模式案例-程序员宅基地

文章浏览阅读1.1w次,点赞6次,收藏29次。在介绍状态模式之前,我们先来看这样一个实例:你公司力排万难终于获得某个酒店的系统开发项目,并且最终落到了你的头上。下图是他们系统的主要工作(够简单)。当你第一眼看到这个系统的时候你就看出来了这是一个状态图,每个框框都代表了房间的状态,箭头表示房间状态的转换。分析如下:房间有三个状态:空闲、已预订、已入住,状态与状态之间可以根据客户的动作来进行转换。定义每个状态的值。 publ..._java中状态设计模式案例

JavaScript — 原生js实现上传图片控件_js利用class实现上传图片组件-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏15次。一、修改原生 input 样式html 结构<div class="card"> <input id="upload" type="file" accept=".jpg" /> <div class="view"> <!-- 上传成功后 --> <div id="imgContainer" class="img-container"> <img id="img" /&_js利用class实现上传图片组件

是德科技KEYSIGHT E4980A精密性LCR测试仪_keysight 4070电容测试精度-程序员宅基地

文章浏览阅读370次,点赞10次,收藏9次。此外,它还具有多种测量模式,可以根据不同的测试需求进行灵活的配置和使用。此外,它还具有很高的测量速度和采样率,可以在短时间内完成大量的测试和数据采集。它具有高精度、高稳定性和高分辨率的测量特点,可以满足各种电子元件和材料的分析和测试需求。此外,它还具有自动校准和校准验证功能,可以保证测量的准确性和可靠性。此外,它还具有自动校准和校准验证功能,可以保证测量的准确性和可靠性。它是一款四端仪器,可以测量电阻、电容和电感等元件的阻抗、相位和品质因数等参数,适用于各种电子元件和材料的分析和测试。_keysight 4070电容测试精度