iview中form表单校验list

需求

在这里插入图片描述
点击添加 增加一行 但是在上一行ip地址为空的时候 不能添加

代码

<template>
  <div>
    <Button type="primary" @click="addlist('formValidate')">添加</Button>
    <Form
      ref="formValidate"
      :model="formValidate"
      :rules="ruleValidate"
      :label-width="80"
      inline
    >
      <Row
        v-for="(item, index) in formValidate.ipList"
        :key="index"
        style="margin: 20px 0"
      >
        <FormItem
          label="IP地址"
          :prop="`ipList.${index}.companyIp`"
          :rules="ruleValidate.companyIp"
        >
          <Input v-model="item.companyIp" placeholder="Enter your name"></Input>  
        </FormItem>
        <FormItem label="备注">
          <Input v-model="item.remark" placeholder="Enter your e-mail"></Input>
        </FormItem>
        <FormItem>
          <Button @click="remove(index)">删除</Button>
        </FormItem>
      </Row>
      <FormItem>
        <Button type="primary" @click="handleSubmit('formValidate')"
          >Submit</Button
        >
        <Button @click="handleReset('formValidate')" style="margin-left: 8px"
          >Reset</Button
        >
      </FormItem>
    </Form>
  </div>
</template>
<script>
import whiteListApi from "@/api/whiteList.js";
export default {
  data() {
    return {
      formValidate: {
        companyIpStatus: 1,
        ipList: [{ companyIp: "", remark: "" }],
      },
      ips: { companyIp: "", remark: "" },
      ruleValidate: {
        companyIp: [
          { required: true, message: "IP地址不能为空", trigger: "blur" },
        ],
      },
    };
  },
  created() {
    this.getIp();
  },

  methods: {
    async getIp() {
      let ret = await whiteListApi.getIPs();
      this.formValidate.companyIpStatus = ret.companyIpStatus;
      this.formValidate.ipList = [...ret.ipList];
    },
    remove(index) {
      if (index != 0) {
        this.formValidate.ipList.splice(index, 1);
      }
    },
    addlist(name) {
      console.log(this.formValidate);
      this.$refs[name].validate((valid) => {
        if (valid) {
          this.formValidate.ipList.push({ ...this.ips });
        } else {
          this.$Message.error("IP地址不能为空");
        }
      });
    },
    handleSubmit(name) {
      this.$refs[name].validate(async (valid) => {
        if (valid) {
          console.log(123);
          let ret = await whiteListApi.putIPs(this.formValidate);
          console.log(ret);
        }
      });
    },
  },
};
</script>


主要是props的传值与fromitem的单独校验

iview form表单通过校验规则来确保用户输入数据的合法性。但是有时候我们需要移除某些校验规则来满足特定需求。 iview form表单提供了两种方法来移除校验规则,分别是通过表单ref属性和通过字段的prop属性。 通过表单ref属性移除校验规则,需要先获取表单对象,然后调用$refs.formName.removeRule()方法。其,formName为表单的ref属性值,removeRule()方法传入的参数为需要移除校验规则的字段的prop属性值。 实例如下: ```html <template> <Form :model="form" :rules="rules" ref="form"> <FormItem label="姓名" prop="name"> <Input v-model="form.name" /> </FormItem> <FormItem label="手机号" prop="phone"> <Input v-model="form.phone" /> </FormItem> <FormItem> <Button @click="removePhoneRule">移除手机号校验</Button> </FormItem> </Form> </template> <script> export default { data() { return { form: { name: '', phone: '' }, rules: { name: [{required: true, message: '请输入姓名', trigger: 'blur'}], phone: [{required: true, message: '请输入手机号', trigger: 'blur'}, {pattern: /^1[3456789]\d{9}$/, message: '手机号格式不正确', trigger: 'blur'}] } } }, methods: { removePhoneRule() { this.$refs.form.removeRule('phone'); } } } </script> ``` 通过字段的prop属性移除校验规则,只需要在校验规则将该字段的校验规则设置为一个空数组即可。 实例如下: ```html <template> <Form :model="form" :rules="rules"> <FormItem label="姓名" prop="name"> <Input v-model="form.name" /> </FormItem> <FormItem label="手机号" prop="phone"> <Input v-model="form.phone" /> </FormItem> <FormItem> <Button @click="removePhoneRule">移除手机号校验</Button> </FormItem> </Form> </template> <script> export default { data() { return { form: { name: '', phone: '' }, rules: { name: [{required: true, message: '请输入姓名', trigger: 'blur'}], phone: [{required: true, message: '请输入手机号', trigger: 'blur'}, {pattern: /^1[3456789]\d{9}$/, message: '手机号格式不正确', trigger: 'blur'}] } } }, methods: { removePhoneRule() { this.rules.phone = []; } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值