Vue表单组件el-form校验规则rules,条件判断rules表单验证显示必填或非必填

在使用 Element UI(一个基于 Vue  的前端框架)的表单验证功能时,你可能想要实现一个规则,使得某些字段在特定条件下成为必填项,或者在满足某些条件时不允许为空。这通常通过自定义校验规则来实现。

<template>
   <div class="psu-title">提交信息</div>
   <el-form :model="formData" :rules="rules" ref="form" label-width="150px">
     <el-form-item label="是否通过:" prop="auditStatus">
       <el-radio-group v-model="formData.auditStatus">
         <el-radio label="1">通过</el-radio>
         <el-radio label="0">不通过</el-radio>
       </el-radio-group>
     </el-form-item>
     <el-form-item label="备注备注:" prop="auditRemark" :rules="formData.auditStatus === '0' ? rules.auditRemark:[{require: false}]">
       <el-input type="textarea" maxlength="100" placeholder="请输入" :rows="4" show-word-limit v-model="formData.auditRemark"></el-input>
     </el-form-item>
   </el-form>
   <div style="text-align: right;">
     <el-button>确定</el-button>
     <el-button>取消</el-button>
   </div>
</template>
export default {
  data() {
    return {
      formData: {
        auditStatus: '',
        auditRemark: '',
      },
      rules: {
        auditStatus: [ { required: true, message: '请选择', trigger: 'change' }],
        auditRemark: [ { required: true, message: '请输入', trigger: 'blur' }],
      },
    };
  },
 
  methods: {
    //方法...
  },
};
</script>

### Vue2 中 Element UI `el-form` 组件表单验证规则 `rules` 在 Vue2 和 Element UI 结合使用的场景下,`el-form` 组件提供了强大的表单验证功能。通过设置 `rules` 属性来定义各个字段的具体校验规则,可以确保用户输入的数据满足特定条件。 #### 定义表单验证规则 为了实现有效的数据验证,在创建表单实例时需指定 `model` 和 `rules` 两个重要属性: - **model**: 表示整个表单对象的数据源。 - **rules**: 描述各字段应遵循哪些约束条件以及违反后的提示信息。 下面是一个简单的例子展示了如何配置 `rules` 来完成必填项、长度限制等常见类型的检验[^2]。 ```html <template> <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm"> <!-- 用户名 --> <el-form-item label="用户名:" prop="username"> <el-input v-model="ruleForm.username"></el-input> </el-form-item> <!-- 密码 --> <el-form-item label="密码:" prop="password"> <el-input type="password" v-model="ruleForm.password" autocomplete="off"></el-input> </el-form-item> <!-- 提交按钮 --> <el-button @click.prevent="submitForm('ruleForm')">提交</el-button> </el-form> </template> <script> export default { data() { var validatePass = (rule, value, callback) => { if (value === '') { callback(new Error('请输入密码')); } else { if (this.ruleForm.checkPass !== '') { this.$refs.ruleForm.validateField('checkPass'); } callback(); } }; return { ruleForm: { username: '', password: '' }, rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' } ], password: [{ validator: validatePass, trigger: 'blur' }] } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('提交成功!'); } else { console.log('错误提交!!'); return false; } }); } } }; </script> ``` 此代码片段中,对于每一个需要被验证的 `<el-form-item>` 元素都指定了对应的 `prop` 值以便关联到相应的验证规则上;而自定义函数 `validatePass()` 被用来处理更复杂的逻辑判断,比如确认两次输入的一致性等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aotman_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值