elementui: 表单规则校验

  1. 校验和自定义校验

这里以vkit为示例

            <vk-form ref="form" :model="customForm" :rules="customFormRules" label-width="123px">
                <vk-form-item label="客服电话号码" prop="tel" >
                    <vk-input class="ipt"   v-model="customForm.tel" placeholder="请输入客服电话号码"></vk-input>
                </vk-form-item>
                <vk-form-item label="" prop="confirmTel" >
                    <vk-input class="ipt"  v-model="customForm.confirmTel" placeholder="请再输一次电话号码,二次确认"></vk-input>
                </vk-form-item>
                <vk-form-item label="" >
                    <!-- <vk-input class="ipt" v-model="customForm.confirmTel" placeholder="请再输一次电话号码,二次确认"></vk-input> -->
                    <vk-button class="btn" type="primary" @click="handleSumbit">提交</vk-button>
                </vk-form-item>
            </vk-form>

记住customForm和customFormRules必须是同名

data() {
        const cb = (rule, value, callback) => {
            // 使用 JavaScript 验证中国手机号码和座机号码 - 座机 - 区号必填
	        if (/^0[1-9][0-9]{1,2}-[2-8][0-9]{6,7}$/.test(value) || /^0[1-9][0-9]{1,2}[2-8][0-9]{6,7}$/.test(value)) {
	            callback();
	        } else {
	            callback(new Error('电话号码需要输入区号)'));
	        }
        };
        return {
            customForm: {
                tel: '',
                confirmTel: ''
            },
            rpkPoster: '',
            rpkName: '',
            customFormRules: {
                tel: 
                [
                    {
                        required: true,
                        message: '请输入手机号',
                        trigger: 'blur'
                    },
                    {
                        validator: cb, // 自定义
                        trigger: 'blur'
                    }
                ],
                confirmTel: [
                    {
                        required: true,
                        message: '请再次请输入手机号',
                        trigger: 'blur'
                    },
                    {
                        validator: cb, // 自定义
                        trigger: 'blur'
                    }
                ]
                
            }
        };
    }

获取全部验证的结果

this.$refs.form.validate((result) => {
                if (result) {
                    // this.$message.success('验证通过');
                    console.log('send ajax');
                } else {
                    // this.$message.error('表单填写有误!请检测表单!');
                }
            });
  1. 校验一次后,修改值后怎么自动触发校验某个字段
    在这里插入图片描述

在这里插入图片描述
实现: 给 el-select 绑定 change 监听,当下拉选择变化的时候,通过事件 出发 form 的validateField 方法,进而触发 input 的校验

sinfleSubmitForm () {
      // addUser
      this.$refs['addFormRef'].validateField('new_cover', (valid) => {
        if (valid) {
          // alert('submit!');
          return 
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },

在这里插入图片描述
在比如这里例子: 链接

  1. 对动态表单校验,对校验函数传递自定义参数
                       <tr v-for="( item , index) in formData.keywords" :key="index">
                                    <td>
                                    
<!-- 对动态下的表单元素套一个 <element-form> <element-form-item> </element-form-item> </el-form>  -->

                                        <vk-form :ref="'formkey' + index" :model="item"  >
                                        <!-- @blur="validateKeyword(item.name, index)" -->
                                            <!-- @input="handleKeywordInput(item.name, index)" -->
                                            <!-- @blur="handleBlurInput(item.name, index)" -->
                                            <vk-form-item label="" prop='name' :rules="[{validator: valiKeyword,trigger: 'blur'}]"  >
                                                            <vk-input
                                                                v-model="item.name"
                                                                size="small"
                                                                placeholder="请输入关键词"
                                                            ></vk-input>
                                            </vk-form-item>
                                        </vk-form>

                                    </td>
                                    <td>
                                        <vk-select v-model="item.type" @change="handleSelect(item.example, index)" size="small">
                                            <vk-option
                                                v-for="item in keywords"
                                                :key="item.type"
                                                :label="item.name"
                                                :value="item.type"
                                            ></vk-option>
                                        </vk-select>
                                    </td>
                                    <td>
<!-- 对单项校验, 会调中传递自定义参数 -->

                                        <vk-form :ref="'formexample' + index" :model="item"  >
                                            <vk-form-item label="" prop='example' :rules="[{ validator: ((rule, value, callback) => { valiExam(rule, value, callback,index) }), trigger: 'blur' }]"  >
                                            <!-- @input="handleExampleInput(item.example, index)" -->
                                            <vk-input
                                                v-model="item.example"
                                                size="small"
                                                placeholder="请输入示例"
                                            ></vk-input>
                                            </vk-form-item>
                                        </vk-form>

                                        <!-- @blur="validateExample(item.example, index)" -->
                                    </td>
                                    <td>
                                        <vk-button
                                            type="primary"
                                            size="small"
                                            icon="el-icon-plus"
                                            circle
                                            @click="handleAdd(item)"
                                        ></vk-button>
                                        <vk-button
                                            v-if="index !== 0"
                                            type="danger"
                                            size="small"
                                            icon="el-icon-delete"
                                            circle
                                            @click="handleDel(index)"
                                        ></vk-button>
                                    </td>
                                    <!-- </el-form> -->
                                </tr>
  1. 手动触发校验
   触发对整个表单的验证:this.$refs.userForm.validate();
   触发对表单部分字段的验证:this.$refs.userForm.validateField("password");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ElementUI 表单校验规则包括以下几种: 1. required:必填项,不能为空。 2. pattern:正则表达式校验,用于检查输入的内容是否符合指定的模式。 3. min:最小值校验,用于检查输入的值是否大于或等于指定的最小值。 4. max:最大值校验,用于检查输入的值是否小于或等于指定的最大值。 5. minlength:最小长度校验,用于检查输入的字符串长度是否大于或等于指定的最小长度。 6. maxlength:最大长度校验,用于检查输入的字符串长度是否小于或等于指定的最大长度。 7. validator:自定义验证函数,用于检查输入的内容是否符合自定义的规则。 这些校验规则可以通过在表单元素上设置属性来实现。例如: ```html <el-form-item label="用户名" prop="username"> <el-input v-model="form.username" :rules="[ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' } ]"></el-input> </el-form-item> ``` 这里的 `rules` 属性是一个数组,包含了两个校验规则:必填项和长度校验。其中,`required` 和 `min`、`max`、`minlength`、`maxlength` 可以直接设置为布尔值或数值,而 `validator` 则需要设置为一个函数。每个校验规则都包含了 `message` 属性,用于指定校验不通过时的提示信息。此外,还可以设置 `trigger` 属性,用于指定何时触发校验,例如 `blur` 表示失去焦点时校验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值