js: ElementUI表单验证validate和validateField (部分表单校验)

1、validate:

对整个表单进行校验的方法,参数为一个回调函数。
该回调函数会在校验结束后被调用,并传入两个参数:是否校验成功和未通过校验的字段。
若不传入回调函数,则会返回一个 promise

Function(callback: Function(boolean, object))

  

2、validateField:

对部分表单字段进行校验的方法

Function(props: array | string, callback: Function(errorMessage: string))

示例

 

 代码:

<template>

<el-form
ref="form"
:model="form"
:rules="rules"
label-width="80px"
size="mini"
>
<el-form-item
label="姓名"
prop="name"
>
<el-input v-model.trim="form.name"></el-input>
</el-form-item>

<el-form-item
label="年龄"
prop="age"
>
<el-input v-model.number="form.age"></el-input>
</el-form-item>

<el-form-item
label="学校"
prop="school"
>
<el-input v-model.trim="form.school"></el-input>
</el-form-item>

<el-form-item>
<el-button
type="primary"
@click="validate"
>校验全部</el-button>

<el-button
type="primary"
@click="validateField"
>校验单个字段</el-button>

<el-button
type="primary"
@click="validateFields"
>校验多个字段</el-button>

</el-form-item>
</el-form>

</template>

<script>
// created at 2021-09-23
export default {
name: 'TestForm',

data() {
return {
form: {
name: '',
age: '',
school: '',
      },

rules: {
name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
age: [
          {
required: true,
message: '请输入年龄',
trigger: 'blur',
          },
          { type: 'number', message: '年龄必须为数字值', trigger: 'blur' },
        ],
school: [{ required: true, message: '请输入学校', trigger: 'blur' }],
      },
    };
  },

methods: {
/**
* 校验全部字段
*/
validate() {
  this.$refs['form'].validate((valid) => {
    console.log(valid); // true/false
  });
},

/**
* 校验单个字段
*/
validateField() {
this.$refs['form'].validateField('name', (errorMessage) => {
  console.log(errorMessage);

  let valid = errorMessage == '' ? true : false;

  console.log(valid); // true/false
});
},
/** * 校验多个字段 */ validateFields() { // 需要校验的字段 let fieldsToValidate = ['name', 'age']; // 将回调转换为Promise Promise.all( fieldsToValidate.map((field) => {   return new Promise((resolve, reject) => {   this.$refs['form'].validateField(field, (errorMessage) => {         resolve(errorMessage); // all返回一个数组 }); }); }) ).then((errorMessages) => {   console.info(errorMessages);   // ['请输入姓名', '请输入年龄']   // errorMessages 里是各个字段的验证错误信息, 如果数组里全为空串则所有验证通过   // 判断errorMessages 里是否全是空串   let valid = errorMessages.every((errorMessage) => { // every全部返回为true,结果才为true     return errorMessage == '';   });   console.log(valid); // true/false }); }, }, }; </script> <style lang="scss" scoped> </style>

 

 

posted @ 2023-02-22 17:55  front-gl  阅读(2649)  评论(0编辑  收藏  举报