element-ui表单动态添加必填校验(根据下拉条件更换必输项)

该文章演示了如何在Vue.js应用中根据用户选择动态改变表单字段的必填状态。通过使用el-form和v-model实现数据绑定,以及自定义验证规则,当活动区域选择为必填时,活动名称成为必填字段。提交表单时,会进行相应的验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 提交表单时根据指定条件动态增加必填项,代码全贴出来了,直接复制可用

<template>
  <div>
    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
      <el-form-item label="活动名称" prop="name" :required="isHaveTo">
        <el-input v-model="ruleForm.name"></el-input>
      </el-form-item>
      <el-form-item label="活动区域" prop="region">
        <el-select v-model="ruleForm.region" placeholder="请选择活动区域" style="width:100%">
          <el-option label="必填" value="0"></el-option>
          <el-option label="非必填" value="1"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>



<script>
export default {
  name: 'HelloWorld',
  data() {
    // 验证活动名称的函数
    let validateName = (rule, value, callback) => {
      // 当活动名称为空值且为必填时,抛出错误,反之通过校验
      if (this.ruleForm.name === '' && this.isHaveTo) {
        callback(new Error('请输入活动名称'))
      } else {
        callback()
      }
    }
    return {
      ruleForm: {
        name: '',
        region: ''
      },
      rules: {
        name: [{ validator: validateName }],
        region: [{ required: true, message: '请选择类型', trigger: 'blur' }]
      }
    }
  },
  computed: {
    isHaveTo: function() {
      return this.ruleForm.region !== `1`
    }
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          console.log(`已提交表单`)
        } else {
          console.log('error submit!!')
          return false
        }
      })
    }
  }
}
</script>

结束语:

希望这篇文章能帮助到大家,如有不对之处,还请指正。愿我们一起成长。

### 如何在 Element-UI 中设置筛选框为必填 Element-UI 提供了一套完整的表单验证机制,可以通过 `rules` 属性来定义字段的校验规则。如果希望将某个筛选框设为必填,则可以利用该功能实现。 以下是具体方法: #### 使用 Form 表单配合 Rules 实现必填校验Element-UI 的 `<el-form>` 组件中,通过绑定 `model` 和 `rules` 来控制数据模型及其对应的校验规则。对于筛选框(如下拉菜单),可以将其嵌入到表单 `<el-form-item>` 中,并为其指定 `required` 验证规则[^5]。 ```vue <template> <el-form :model="form" :rules="rules" ref="filterForm"> <!-- 筛选框 --> <el-form-item label="请选择:" prop="selectedOption"> <el-select v-model="form.selectedOption" placeholder="请选择选"> <el-option label="选一" value="option1"></el-option> <el-option label="选二" value="option2"></el-option> </el-select> </el-form-item> <!-- 提交按钮 --> <el-button type="primary" @click="submitForm('filterForm')">提交</el-button> </el-form> </template> <script> export default { data() { return { form: { selectedOption: '' // 初始值为空字符串表示未选择 }, rules: { selectedOption: [ { required: true, message: '此不能为空', trigger: 'change' } // 设置必填规则 ] } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('提交成功!'); } else { console.log('错误! 数据未填写完整'); return false; } }); } } }; </script> ``` 上述代码展示了如何创建一个带有必填校验的筛选框。当用户尝试提交表单而未选择任何选时,会触发提示消息:“此不能为空”。 --- #### 关键点解析 1. **`prop` 属性的作用** 在 `<el-form-item>` 中使用 `prop` 将其关联至 `rules` 对应的字段名称。此属性用于指示哪个字段需要接受特定的校验逻辑[^6]。 2. **`trigger` 参数的选择** 校验触发方式可以选择 `'blur'` 或 `'change'`。如果是下拉列表或其他交互型控件,推荐使用 `'change'`,以便实时响应用户的操作变化[^7]。 3. **自定义错误信息** 可以通过 `{message}` 定义更友好的提示文字,提升用户体验。 --- ### 注意事 虽然 Element-UI 支持丰富的表单校验功能,但在实际开发过程中需要注意以下几点: - 如果筛选框的数据来源于动态接口加载,请确保初始状态已正确初始化,以免影响校验流程。 - 当涉及复杂业务场景时,可能还需要结合其他插槽或事件监听进一步扩展功能[^8]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值