Vue中输入框只能输入整数和小数

11 篇文章 1 订阅
  1. 在main.js中写一个指令

     //限制只能输入正整数,不包含小数
     Vue.directive('enterNumber', {
       inserted: function (el) {
         el.addEventListener("keypress",function(e){
           e = e || window.event;
           let charcode = typeof e.charCode == 'number' ? e.charCode : e.keyCode;
           let re = /\d/;
           if(!re.test(String.fromCharCode(charcode)) && charcode > 9 && !e.ctrlKey){
               if(e.preventDefault){
                   e.preventDefault();
               }else{
                   e.returnValue = false;
               }                            
           }
         });
       }
     });
     
     //只能输入正整数及小数 包含小数点
     Vue.directive('enterNumber2', {
       inserted: function (el) {
         el.addEventListener("keypress",function(e){
           e = e || window.event;
           let charcode = typeof e.charCode == 'number' ? e.charCode : e.keyCode;
           let re = /\d/;
           if(charcode == 46){
             if(el.value.includes('.')){
               e.preventDefault();
             }
             return;
           }else if(!re.test(String.fromCharCode(charcode)) && charcode > 9 && !e.ctrlKey){
             if(e.preventDefault){
               e.preventDefault();
             }else{
                 e.returnValue = false;
             }
           }
         });
       }
     });
     //有小可爱提出了是否能输入小数,我想了想,大概可以实现输入负数,但是并不是限制只能是负整数。有空我再思考下
    
    // 只能输入正负整数及小数 包含小数点
    Vue.directive('enterNumber3', {
      inserted: function (el) {
        el.addEventListener('keypress', function(e) {
          e = e || window.event
          const charcode = typeof e.charCode === 'number' ? e.charCode : e.keyCode
          const re = /\d/
          if (el.value === '' && charcode === 45) {
            return true;
          } else if (el.value !== '' && charcode === 45) {
            e.preventDefault();
            return false
          }
          if (charcode === 46) {
            if (el.value.includes('.')) {
              e.preventDefault()
            }
            return true
          } else if (!re.test(String.fromCharCode(charcode)) && charcode > 9 && !e.ctrlKey) {
            if (e.preventDefault) {
              e.preventDefault()
            } else {
                e.returnValue = false
            }
          }
        })
      }
    })
    

2.使用方法

<input type="text" v-enter-number2 >
<input type="number" step="0.0000000001" v-enter-number > 
<input type="text" v-enter-number3 >
//在只允许输入正整数的情况下,type="number" 可以防止输入中文,step="0.0000000001" 可以处理输入小数时的“请输入有效值,两个.....” 
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值