vue+elementui 项目中输入手机号,要求必须是数字限制最长11位 。type=“number“ 中maxlength失效

在Vue项目中,使用ElementUI的`el-input`组件时,遇到`type="number"`限制数字输入有效但`maxlength="11"`长度限制失效的问题。通过创建一个全局指令`v-number-only`,在`main.js`中实现输入框只能输入数字且最大长度为11位的功能,避免了`type="number"`允许非数字字符输入和`type="text"`或`type="tel"`时长度限制失效的问题。
摘要由CSDN通过智能技术生成

这样的需求是经常用到的。但是我们在用的时候却发现了一些问题:

<el-input v-model="mobile"   placeholder="手机号"  type="number"  maxlength="11"></el-input>

只能输入数字:type="number"  

最长11位 : maxlength="11"

如果写type="number"  maxlength="11"。的确只能输入数字但是maxlength="11"的长度限制却失效了。

如果不写type="number"用text。或者tel。maxlength="11"的长度限制有用。但是却可以输入非数字。

我们可以在main.js里面写个全局的指令。用来限制只输入数字。

 

/* 自定义指令只能输入数字 使用 v-number-only*/

Vue.directive('numberOnly', {

  bind: function(el) {  

    el.handler = function() {

      el.childNodes[1].value = el.childNodes[1].value.replace(/\D+/g, '');//因为是elementui组件里使用的el.value获取不到我们输入的内容。然后我发现他的第一个孩子才是我们输入的手机号码的内容。<

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值