antdesginVue 表单循环校验

antdesginVue 表单循环校验

HTML部分代码


 <div
          style="
          border-top: 1px solid #a9a8ab;
          border-bottom: 1px solid #a9a8ab;
          border-width: 80%;
          padding-top: 15px;
          margin-bottom: 20px;
          padding-bottom: 20px;
        "
      >
          <span style="margin:0 0 4% 4%;display: block; font-weight: bold">
            坐标(至少3个点,第一个点和最后一个点为同一点,围成一个闭合区域,批量导入数据格式应纬经度以逗号隔开,每组以分号隔开,例如:445.5652,454.7844;775.5652,854.7844;445.5652,454.7844;)
          </span>
          <a-button style="margin: 0 10px 10px 10%" @click="addCoor" type="primary" ghost>新增点</a-button>
          <a-button type="primary" @click="Import">批量导入</a-button>
        <a-card 
          v-for="(location,index) in formState.location"
          :key="index"
          style="margin-bottom: 10px; margin-left: 6%; width: 90%"
          title="坐标"
        >
          <template #extra><a-button  type="primary" danger ghost size="small"  @click="deleteCoor(index)">删除</a-button></template>
          <span style="font-weight: bold">点{{ index + 1 }}</span>
          <a-form-item label="纬度" :name="['location', index, 'latitude']" :rules="{required: true,trigger: 'blur',validator: validatePass}">
            <a-input
              v-model:value="location.latitude"
              placeholder="整数位1-3位,小数位固定四位"
              allowClear  
            />
          </a-form-item>
          <a-form-item label="经度" :name="['location', index, 'longitude']" :rules="{required: true,trigger: 'blur',validator: validatePass}">
            <a-input
              v-model:value="location.longitude"
              placeholder="整数位1-3位,小数位固定四位"
              allowClear
            />
          </a-form-item>
        </a-card>
      </div>
//自定义校验
  let validatePass = async (rule: any, value: string) => {
      if(value === ''){
        return Promise.reject('请输入');
      } else {
        if(!longitude.test(value)){
          return Promise.reject('请输入整数位1-3位,小数位固定四位');
        } 
      }
        return Promise.resolve();
    };

在这里插入图片描述
这样就OK啦:
![在这里插入图片描述](https://img-blog.csdnimg.cn/64fe0e7b802445b39442271033bafa14.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,我可以给你提供一些基本的思路和建议,帮助你完成 element 循环校验。 首先,element 提供了很多校验的方法,包括:required、min、max、type、pattern、validator 等。你可以根据字段的特点和需求,选择相应的校验方法进行使用。 当你需要对循环进行校验时,可以通过遍历数组,逐一对每个项进行校验。同时,为了方便错误提示和提交,你可以给每个项设置唯一的 ref 属性,这样在校验时可以根据 ref 属性方便地获取相应的项。 在校验过程中,可以将每个项的校验结果保存在一个数组中,并在最后统一判断是否所有项都通过校验。如果有任何一个项未通过校验,可以将其对应的错误信息保存在一个对象中,最终将错误信息对象传递给父组件,以便进行错误提示和提交处理。 基本的校验代码如下所示: ```javascript <template> <el-form :model="form" ref="form" :rules="rules"> <el-form-item v-for="(item, index) in formItems" :key="index"> <el-input v-model="form[index]" :ref="'item_' + index"></el-input> </el-form-item> </el-form> </template> <script> export default { data() { return { formItems: [ { label: '姓名', prop: 'name' }, { label: '年龄', prop: 'age' }, { label: '性别', prop: 'gender' }, ], form: { name: '', age: '', gender: '', }, rules: { // 根据实际需求进行校验规则的设置 }, }; }, methods: { validate() { const errors = {}; this.formItems.forEach((item, index) => { const refName = 'item_' + index; const validResult = this.$refs.form.validateField(refName); if (validResult !== true) { // 根据实际需求设置错误信息 errors[item.prop] = validResult[0].message; } }); if (Object.keys(errors).length > 0) { // 根据实际需求进行错误提示和提交处理 } else { // 根据实际需求进行提交处理 } }, }, }; </script> ``` 当然,校验规则的设置和错误提示、提交处理等细节需要根据实际需求进行调整和完善。希望以上建议能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值