vue 表单验证,关于 trigger: 'blur',trigger: "change" 和 validator 之间有什么关联?

项目升级,原来的选择器需要改为支持多选,所以页面绑定的值也就由字符串变成了字符串数组,

但是表单验证规则不变,之前的单选是必选项,现在的多选也要至少选择一项。

所以需要自定义验证规则,将原配置项中的 required: true 改为了 validator:validatorFun,

组件完整代码如下:

<template>

<div>

<el-form ref="form" :rules="rules" :model="form" >

<el-row>

<div class="grid-content bg-purple">

<el-form-item label="对照输入框" prop="phone" >

<el-input v-model="form.phone" maxlength="11" placeholder="请输入" />

</el-form-item>

</div>

<div >

<el-form-item label="多选列表" prop="itemList" >

<el-select style="width: 100%" v-model="form.itemList" multiple>

<el-option v-for="(item,index) in itemList" :key="index" :label="item.label" :value="item.value" />

</el-select>

</el-form-item>

</div>

</el-row>

</el-form>

<div slot="footer" class="dialog-footer">

<el-button type="primary" @click="funcSubmit">提交</el-button>

</div>

</div>

</template>

<script>

import Vue from 'vue'

import 'xe-utils'

import VXETable from 'vxe-table'

import 'vxe-table/lib/index.css'

Vue.use(VXETable)

export default {

name: 'VcName',

data() {

// 自定义表单验证函数

const validatoritemList=(rule, value, callback)=>{

if(value && value.length!=0){ callback() }

else{ callback(new Error()) }

}

return {

form: {

phone:'',

itemList:[],

},

// 可以选择的列表

itemList:[

{label:'1',value:'1'},

{label:'2',value:'2'},

{label:'3',value:'3'}

],

// 表单验证规则

rules: {

phone:[{ required: true, message:'请输入', trigger: "blur"}],

itemList: [{ required: true, validator:validatoritemList, message:'请选择', trigger: "blur"}]

}

}

},

methods: {

// 提交

funcSubmit() {

this.$refs['form'].validate((valid) => {

if (valid) {console.log('验证成功') }

else {return false }

})

},

}

}

</script>

trigger 值为 ‘change’ 时已排查到原因,值为 ‘blur’ 时选择器失焦却不会验证进行验证,只有提交的时候才会验证,作为对比的 el-input 用普通的必填验证就可以正常提示输入信息。这是怎么引起的?该怎么解决?


回答:

当trigger为change的时候,页面关闭调用form的clearvalidate应该可以避免打开就执行的问题


回答:

多选时,选择器v-model绑定的初始属性要改成空数组,例如:[]
itemList校验加个type字段,trigger:change

itemList: [{ type: 'array', required: true, validator:validatoritemList, message:'请选择', trigger: "change"}]

以上是 vue 表单验证,关于 trigger: &#x27;blur&#x27;,trigger: &quot;change&quot; 和 validator 之间有什么关联? 的全部内容, 来源链接: utcz.com/p/934181.html

回到顶部