vue中watch实现只能输入数字

278 阅读1分钟

vue自己的v-model.number存在清空后可以输入string的情况

所以自己做监听实现只能输入数字

  watch:{
    'obj.num':{
      handler(value){
        if(value-0 != value && value !== '-'){
          this.obj.num = value.slice(0, value.length-1);
        }
        this.obj.num = this.obj.num.trim();
      }
    },
    arr:{
      deep: true,
      handler(value){
        value.map((it, index) => {
          if(it.num-0 != it.num && it.num !== '-'){
            this.arr[index].num = value.slice(0, value.length-1);
          }
          this.arr[index].num = this.arr[index].num.trim();
        })
      }
    },
  },

支持小数点,支持负数,并做了首尾空格去除

注意arr加上引号后就监听不到了