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

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

<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获取不到我们输入的内容。然后我发现他的第一个孩子才是我们输入的手机号码的内容。

     

    }

    el.addEventListener(‘keyup‘, el.handler); //这里使用keyup。我开始用的input发现第一次输入拼音字母竟然是可以输入的。改成keyup就都不能输入非数字了

  },

  unbind: function(el) {

    el.removeEventListener(‘keyup‘, el.handler);

  }

})

然后使用

<el-input v-model=”mobile”   placeholder=”手机号”  v-number-only   maxlength=”11″></el-input>

    原文作者:夏天想
    原文地址: https://blog.csdn.net/qq_33769914/article/details/107067073
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞