element-ui 表单验证提示 is not a string

发布于 2022-09-06 01:19:30 字数 1500 浏览 17 评论 0

由于需要验证数字,我在rules中加入type为number,然后输入数字时提示 is not a number

好吧,我用正则判断,去掉type:number 验证成功,代码执行通过

后来, 由于后端返回的为数字,验证又提示 is not a string

提问,如何能让他不去验证格式呢。

<el-form-item label="价格" prop="price"> <el-input v-model="form.price" ></el-input> </el-form-item>
<el-form-item label="克重" prop="weight" > <el-input v-model="form.weight"  type="number"></el-input> </el-form-item>
<el-form-item label="汇率" prop="rate"> <el-input v-model="form.rate"  type="number"></el-input> </el-form-item>
  rules: {

                    name: [
                        { required: true, message: '请填写名称', trigger: 'blur' }
                    ],
                    price: [
                        { required: true, message: '请填写价格', trigger: 'blur' }
                    ],
                    weight: [
                        { required: true,  message: '请填写克重', trigger: 'blur' },
                        {validator(r,v,b){console.log(v);(/^[\d]*$/).test(v)?b():b(new Error('请填写数字'))}}
                    ],
                    rate: [
                        { required: true,  message: '请填写数字汇率',  trigger: 'blur'},
                        {validator(r,v,b){(/^[\d]*$/).test(v)?b():b(new Error('请填写数字'))}}
                    ]
                }

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

樱花落人离去 2022-09-13 01:19:30

我也研究了半天。。原因出在trigger: 'blur',一张图说明:
图片描述

我们的影子 2022-09-13 01:19:30

首先需要将 Input 的值类型强制转为 number

<el-form-item label="克重" prop="weight" > 
    <el-input v-model.number="form.weight" type="number"></el-input> 
</el-form-item>

然后,服务器返回的值做一下强制数值转换,假设服务器返回回来的数值为 res.param.weight

this.form.weight = res.param.weight * 1

最后,将表单验证规则设置为数值类型

weight: [
    {type: 'number', required: true,  message: '请填写克重', trigger: 'blur' }
],
不即不离 2022-09-13 01:19:30

weight: [
{ type: 'number', required: true, message: '请填写克重', trigger: 'blur' }
]

薄荷港 2022-09-13 01:19:30
 <el-form-item
    label="年龄"
    prop="age"
    :rules="[
      { required: true, message: '年龄不能为空'},
      { type: 'number', message: '年龄必须为数字值'}
    ]"
  >
    <el-input type="age" v-model.number="numberValidateForm.age" auto-complete="off"></el-input>
  </el-form-item>

数据自动转换为数字格式 没看完文档

寒江雪… 2022-09-13 01:19:30

vue element-ui使用自定义正则表达式:

let validatePass = (rule, value, callback) => {
     let regExp = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/
     if (value === '') {
        callback(new Error('请输入密码'))
     } else if (regExp.test(value) === false) {
       callback(new Error('8-16字母和数字组成,不能是纯数字或纯英文'))
     } else {
        if (this.ruleForm.repass !== '') {
          this.$refs.ruleForm.validateField('repass')
        }
          callback()
     }
}

全套完整代码:[vuejs+element ui+ssm+maven实现登陆注册功能(有完整源码下载)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文