如何使用Vue和Element-UI进行数据校验与表单验证

在Web开发过程中,表单验证是非常重要的一个环节,它可以保证用户输入的数据符合我们的要求,从而减少可能出现的错误。本文将介绍如何在Vue中使用Element-UI进行数据校验和表单验证。

1. 确认需要验证的表单项

在开始之前,我们需要确定哪些表单项需要被验证。通常来说,只有一些必填项需要进行验证,比如用户名、密码、手机号等。我们需要为这些表单项设置必填标识,并且在提交表单的时候进行验证。

1.1 设置必填标识

在HTML中,我们可以使用`required`属性来设置一个表单项为必填项。例如,下面的代码片段中,`input`元素被设置为必填项:

<input type="text" name="username" required>

在Vue中,我们可以使用`rules`属性来设置某个表单项的验证规则。下面的示例代码中定义了一个`rules`对象,并为`username`表单项设置了必填规则:

export default {

data() {

return {

form: {

username: '',

password: ''

},

rules: {

username: [

{ required: true, message: '请输入用户名', trigger: 'blur' },

],

password: [

{ required: true, message: '请输入密码', trigger: 'blur' }

]

}

}

}

}

可以看到,我们定义了一个`rules`对象,该对象中包含了若干个验证规则。每个验证规则都是一个数组,数组中包含了一个或多个校验规则对象。在上面的示例中,`username`和`password`表单项都被设置为必填项,如果用户未输入相关数据,将在表单下方展示提示信息,让用户知道哪些项未填写。

1.2 提交表单时进行验证

在完成表单验证的前提下,我们需要在用户提交表单之前对表单进行二次验证。如果表单中存在错误的数据,我们需要阻止表单的提交,并在表单下方给出提示信息。下面的代码片段展示了如何通过`validate`方法来提交表单的时候进行验证:

export default {

methods: {

submitForm(formName) {

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

if (valid) {

// 执行表单提交逻辑

} else {

console.log('error submit!!');

return false;

}

});

}

}

}

在代码中,我们通过`refs`属性获取到表单的引用。在调用`validate`方法时,我们需要传入一个回调函数。当表单验证通过时,validate方法会将`valid`参数设为`true`,否则设为`false`。如果`valid`为`false`,我们需要把表单提交的方法的返回值设置为`false`,直接关闭表单提交,同时在控制台中打印出错误信息。

2. 使用Element-UI进行校验

现在,我们已经确定了需要验证的表单项,并且可以在提交表单时进行验证。接下来,我们将使用Element-UI中提供的输入框组件来进行表单验证。该组件可以通过简单的设置,自动生成表单验证规则,大大简化了表单验证的过程。

2.1 使用Element-UI输入框组件

Element-UI中的`el-form`和`el-form-item`组件可以帮助我们快速地搭建出表单界面,并且提供了表单验证所需的一些简单的规则设置。在下面的代码中,我们使用了`el-input`组件代替了普通的`input`元素:

<template>

<el-form :model="form" ref="form" label-width="80px" class="demo-ruleForm">

<el-form-item label="用户名" prop="username">

<el-input v-model="form.username" autocomplete="off"></el-input>

</el-form-item>

<el-form-item label="密码" prop="password">

<el-input type="password" v-model="form.password" autocomplete="off"></el-input>

</el-form-item>

</el-form>

</template>

通过Element-UI提供的`el-input`组件,我们可以快速地完成一个输入框的制作。为了联通输入框和表单验证,我们可以通过`prop`属性将输入框与表单验证关联起来。

2.2 设置验证规则

在使用Element-UI进行表单验证时,我们只需要在`el-form-item`组件中使用`rules`属性即可自动生成验证规则。下面的示例代码中,我们为`username`和`password`表单项设置了验证规则:

<template>

<el-form :model="form" ref="form" label-width="80px" class="demo-ruleForm">

<el-form-item label="用户名" prop="username" :rules="rules.username">

<el-input v-model="form.username" autocomplete="off"></el-input>

</el-form-item>

<el-form-item label="密码" prop="password" :rules="rules.password">

<el-input type="password" v-model="form.password" autocomplete="off"></el-input>

</el-form-item>

</el-form>

</template>

<script>

export default {

data() {

return {

form: {

username: '',

password: ''

},

rules: {

username: [

{ required: true, message: '请输入用户名', trigger: 'blur' },

{ min: 5, max: 10, message: '长度在 5 到 10 个字符', trigger: 'blur' }

],

password: [

{ required: true, message: '请输入密码', trigger: 'blur' },

{ min: 6, max: 12, message: '长度在 6 到 12 个字符', trigger: 'blur' }

]

}

}

}

}

</script>

在代码中,我们可以看到`rules`属性中的规则和前文中定义的规则非常相似。不同的是,我们可以使用更简单的方式设置规则。在示例代码中,我们使用了`min`和`max`属性来限制字符长度,这是Element-UI中提供的验证规则之一。

2.3 显示错误信息

在表单验证不通过时,我们需要向用户显示错误信息。在Element-UI中,可以使用`el-form-item`组件的`prop`属性来将验证结果与表单项产生联系,通过`validateState`属性来判断验证结果。下面的代码片段展示了如何在验证不通过的时候展示错误信息:

<template>

<el-form :model="form" ref="form" label-width="80px" class="demo-ruleForm">

<el-form-item label="用户名" prop="username" :validate-state="validateState('username')" :error-message="errorMessages.username">

<el-input v-model="form.username" autocomplete="off"></el-input>

</el-form-item>

<el-form-item label="密码" prop="password" :validate-state="validateState('password')" :error-message="errorMessages.password">

<el-input type="password" v-model="form.password" autocomplete="off"></el-input>

</el-form-item>

</el-form>

</template>

<script>

export default {

data() {

return {

form: {

username: '',

password: ''

},

errorMessages: {},

rules: {

username: [

{ required: true, message: '请输入用户名', trigger: 'blur' },

{ min: 5, max: 10, message: '长度在 5 到 10 个字符', trigger: 'blur' }

],

password: [

{ required: true, message: '请输入密码', trigger: 'blur' },

{ min: 6, max: 12, message: '长度在 6 到 12 个字符', trigger: 'blur' }

]

}

}

},

methods: {

// 根据验证结果设置状态

validateState(item) {

const formItem = this.$refs.form.fields[item]

return formItem ? formItem.validateState : ''

},

// 显示错误提示信息

showErrors() {

// 获取错误信息

this.errorMessages = {}

Object.keys(this.rules).forEach((key) => {

const errors = this.$refs.form.fields[key].validateMessage

if (errors) {

Object.assign(this.errorMessages, { [key]: errors.join('; ') })

}

})

}

}

}

</script>

在代码中,我们设置了`validate-state`属性和`error-message`属性。`validate-state`属性根据验证结果来决定验证状态,可以取值为success、error、warning。`error-message`属性用于展示错误信息。我们编写的`validateState`方法可以根据表单验证结果判断出验证状态。同样,我们编写的`showErrors`方法也使用Element-UI提供的方法来显示错误信息。

3.总结

在本文中,我们介绍了如何使用Vue和Element-UI进行表单验证。首先我们确定了需要验证的表单项,然后设置了表单的验证规则,并且编写了验证方法。我们使用了Element-UI提供的输入框组件和表单组件,它们可以快速地搭建出界面,并且提供了表单验证所需的一些简单的规则设置。最后,我们使用Element-UI提供的方法将验证结果和表单项产生关联,通过控制状态和显示错误信息的方式,使得用户可以快速地知道自己所填写的信息错误的地方,并及时做出修改。