Arvin Chen 2022-01-09 01:34 采纳率: 100%
浏览 35
已结题

v-model 输入框 输入非法字符 输入框的显示为非法字符不显示绑定的值

电商项目中购买商品输入框中做了逻辑判断输入非法字符不让修改v-model绑定的变量,但是页面还是显示输入的非法字符

              < div class="controls">
                <input autocomplete="off" class="itxt" v-model.lazy="defaultnum">
                <a href="javascript:" class="plus" @click="defaultnumadd">+</a>
                <a href="javascript:" class="mins" @click="defaultnumred">-</a>
              </div>

<script>
data(){
      return{
        num:0
      }
    },
computed:{
 defaultnum:{
      get:function(){
        return this.num
      },
      set:function(newNum){
        if(+newNum??''!==''){
           return this.num=Math.floor(newNum)
        }
        else{
                   return this.num  //这里怎么能做一个刷新之类的操作呢?因为值没变所以他不刷新就会显示非法字符求教!!!!
        }
      }
    }
},
methods:{
   
      defaultnumadd(){
        this.num=+this.num+1 //因为输入的值是字符串所以+this.num转化一下不然就变成拼接了
      },
      defaultnumred(){
        this.num=+this.num-1 
        this.num>=0?this.num:this.num=0

      }
    },
</script>

运行结果及报错内容

如果input输入框 输入一个f 或者其他字母或者非法字符 后 页面就显示这个非法字符 ,我想让他显示我的合法值怎么弄?

我想要达到的结果

让页面显示的和我的绑定值一致

  • 写回答

1条回答 默认 最新

  • 关注

    把this.num 先赋值为别的,再赋值回原来的值就可以了

    computed: {
        defaultnum: {
            get: function() {
                return this.num
            },
            set: function(newNum) {
                if (!isNaN(Math.floor(newNum))) {
                    this.num = Math.floor(newNum)
                } else {
                    let r = this.num;
                    this.num = -1;
                    this.num = r;
                }
            }
        }
    },
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月9日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分