vue中iview组件实现表单数据的动态校验

该文章展示了一个使用iview组件库创建的Vue.js表单,通过动态设置规则来实现审核结果与备注字段验证的交互。当审核结果为通过时,备注非必填;若为驳回,则备注变为必填。表单验证在提交时触发,确保数据完整性。
摘要由CSDN通过智能技术生成

1.实现效果

2.实现原理

  • iview组件库Form表单, ref=“formValidate”,:model=“formInline”,:rules=“ruleValidate”。
  • 选择审核结果的时候动态的设置备注的规则,当为通过为非必填,反之为必填。
  • 为备注项设置相应的动态rule:
  • :rules="formInline.status == '2'? ruleValidate.remark: [{ required: false }]"
    

    3.实现代码

    <template>
      <div class="content">
        <Card>
          <p slot="title">表单动态校验</p>
          <Form
            :label-width="100"
            ref="formValidate"
            :model="formInline"
            :rules="ruleValidate"
          >
            <FormItem label="审核结果:" prop="status">
              <Select
                v-model="formInline.status"
                placeholder="请选择审核结果"
              >
                <Option value="1">审核通过</Option>
                <Option value="2">审核驳回</Option>
              </Select>
            </FormItem>
            <FormItem
              label="备注:"
              prop="remark"
              :rules="
                formInline.status == '2'
                  ? ruleValidate.remark
                  : [{ required: false }]
              "
            >
              <Input v-model="formInline.remark" type="textarea"></Input>
            </FormItem>
            <div style="text-align: right; padding: 20px 0">
              <Button size="large" type="default" @click="cancelAction" class="mr10"
                >取消</Button
              >
              <Button size="large" type="primary" @click="addAction">确认</Button>
            </div>
          </Form>
        </Card>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          formInline: {
            remark: "",
            status: "",
          },
          ruleValidate: {
            status: [
              { required: true, message: "审核结果不能为空", trigger: "change" },
            ],
            remark: [
              { required: true, message: "请填写不通过原因", trigger: "blur" },
            ],
          },
        };
      },
      methods: {
        addAction() {
          let data = { ...this.formInline };
          console.log(data);
          this.$refs.formValidate.validate((valid) => {
            if (valid) {
              this.$Message.success("操作成功");
              this.cancelAction();
            }
          });
        },
        cancelAction() {
          Object.keys(this.formInline).forEach((key) => {
            this.formInline[key] = "";
          });
          this.$refs["formValidate"].resetFields();
        },
      },
    };
    </script>
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值