【Vue+Element-ui】在elment-form中使用rulers检验number踩坑

出现的问题

<el-form :model="create_form" :rules="create_rules">
            <el-form-item label="商品价格" :label-width="formLabelWidth" prop="price">
              <el-input v-model="create_form.price" autocomplete="off">
              </el-input>

在表单中通过rules属性判断该input是否为number,但是在运行后,numbers判断失效(即输入数字还是检验失败)

原因

原因是因为v-model在默认情况下绑定的是一个string,看了一些网上的方法即在v-model后加上.number(v-model.number),同样不行。看了
这篇文章里的解释:

高版本的element-ui,el-input不再支持修饰符(.number .lazy .trim等都不支持)
使用的话会有bug,不同的element-ui版本bug表现不同。

解决办法

在rules有个属性transform,可以在验证前对校验的值做转换,而且这个转换并不会影响到表单绑定的源数据,具体的rules属性可以看这篇文章
成功解决:

          "price": [{
            require: true, message: "请输入商品价格", trigger: 'blur', transform(value) { return Number(value) }
          },
          { type: 'number', min: 1 }],
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值