el-input-number直接在输入框输入内容v-model的值不会跟着改变

前言


前提是element-ui版本为2.15.1及以下版本,因为说不定哪天element就会更新,解决这个问题

最近在开发项目中,有一个需求是在el-input-number组件中直接输入值,然后离开鼠标直接mouseenter其他的button,这个时候要获取v-model的值,发现v-model的值并不会改变,于是就开始折腾,查elementui的issure发现是因为el-input-number在封装时并没有将直接输入的值赋值给v-model,然后自己细想一下使用@keyup事件把输进去的值在给到v-model.

接下来是直接看代码,简单明了

因为el-input-number`是在失焦后才对input输入框进行校验,但是我在hover另一个button的时候,其实并没有失焦,所以这个时候v-model的值并没有改变,我需要另辟蹊径,就是在keyup的时候把这个值给到v-model这样就算是不失焦我也可以拿到改变后的v-model的值

     <div class="size_select Quan_num_tity">
              <el-input-number
                v-model.number="choose_quantity"
                :min="1"
                :max="99"
                :step="1"
                step-strictly
                @keyup.native="number_change($event)"
              />
            </div>
          <div class="Pay_immediately" @mouseenter.stop="show_qr_area($event)">扫描二维码立即支付</div>

<script>
export default {
  data() {
    return {
             choose_quantity: 1, //默认的选择购买的数
     }
  },
  mounted() {},
  methods: {
   
    number_change(e) {
  //在输入的时候就要判断只能输入正整数
      e.target.value = e.target.value.replace(/[^0-9]/g, '')
      //   然后在每次keyup时把值赋给v-model
      if (!e.target.value) {
       // 这里给undefined是因为不给值就会默认变为1,不会为空,导致用户输入不了别的数值
        this.choose_quantity = undefined
      } else {
        this.choose_quantity = e.target.value
      }
    },
//  hover支付button时判断有没有填写数量
show_qr_area(){
          if (!this.choose_quantity) {
        this.$message({
          message: 'Quantity cannot be empty !',
          type: 'warning',
        })
        return false
      }
  }


},
}
</script>

结束语

到这里就是我的此次需求的解决方案,记录下来,方便后续自己学习使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值