Element UI表单自定义校验方法

引言

最近遇到一个前端页面表单的校验问题,就是数据库里存的是一个json字符串,然后前端页面展示的时候需要解析为表单的字段,同时需要对内容做非空的校验。
作为一个会一点前端的后端开发人员,我只能两眼一抹黑,看了一下前辈们写的代码,没有看到类似的解决方案,于是只能打开百度搜索一下。
最终皇天不负有心人,在经过了一段时间的分析、研判和尝试后,还算完美的解决了这个问题。

正文

首先,搞一个自定义的表单元素:

<el-form-item
  label="账号"
  :prop="'CDEAccount' + index"
  :rules="{
    required: true,
    fieldValue: item.account,
    validator: judgeCDE,
    trigger: 'blur'}">
  <el-input v-model="item.account" autocomplete="off" placeholder=""/>
</el-form-item>

其中item就是json字符串接解析后生产的对象,acount就是这个对象的一个属性,页面展示为表单的一个字段。
需要注意以下几个问题:
:prop 这个属性一定要定义,不然不会触发表单的自动校验功能。
fieldValue 设置为该字段的值,之后可以在校验方法中获取到。
judgeCDE 就是自定义的校验方法。

然后,就是自定义的校验方法了:

judgeCDE(rule, value, callback) {
  if (rule.required == true && !rule.fieldValue) {
    return callback(new Error('Required'))
  } else {
    callback()
  }
}

方法中的判断条件一定不要忘了 rule.required ,不然不管 rule.fieldValue 有没有值,校验可能都过不了了。

最后,就可以实现字段值非空的校验了,当然同理应该也可以实现其他的校验功能:
在这里插入图片描述

Element UI表单中实现整数校验有多种方法。 可以使用`el-input-number`标签,它能将输入框显示为数字类型,便于输入整数。不过若要确保输入为正整数,则需要额外的判断逻辑 [^1]。 也可以自定义校验规则来实现整数校验。例如在表单中使用`el-input`时,若要验证输入数字的格式,可通过自定义验证方法传参,灵活定义整数位和小数位的限制 [^2]。 以下是一个示例代码,展示了如何在Element UI表单中使用自定义校验规则进行整数校验: ```vue <template> <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> <el-form-item label="整数输入" prop="integerValue"> <el-input v-model="ruleForm.integerValue"></el-input> </el-form-item> <el-form-item> <el-button @click="submitForm('ruleForm')">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { const validateInteger = (rule, value, callback) => { if (!/^\d+$/.test(value)) { callback(new Error('请输入整数')); } else { callback(); } }; return { ruleForm: { integerValue: '' }, rules: { integerValue: [ { validator: validateInteger, trigger: 'blur' } ] } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('表单验证通过'); } else { console.log('表单验证失败'); return false; } }); } } }; </script> ``` 在上述代码中,定义了一个自定义校验函数`validateInteger`,使用正则表达式`/^\d+$/`来判断输入值是否为整数。若不是整数,则通过`callback`返回错误信息;若是整数,则调用`callback()`表示校验通过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值