1. 为什么要进行表单验证?
表单是网站或者应用中最常见的交互方式之一,用户输入各种不同类型的数据,需要保证这些数据的准确性和合法性。因此,在前端中进行表单验证至关重要。
表单验证的目的是为了保证输入值的正确性,防止非法数据提交,并给出友好的提示信息。
2. 前端表单验证方式
前端表单验证一般分为以下几种形式:
2.1. HTML5 表单验证
HTML5 中提供了一些表单验证的属性,例如 required
、pattern
、min
、max
等等,这些属性可以直接写在表单元素中,浏览器会自动进行验证。
<input type="email" name="email" required pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$">
这段代码中,required
表示该元素必填,pattern
验证输入值是否符合正则表达式。
2.2. JavaScript 表单验证
JavaScript 表单验证可以通过在表单提交时,对输入值进行验证,并给出提示信息。
function validateForm() {
var name = document.forms["myForm"]["name"].value;
if (name == "") {
alert("Name must be filled out");
return false;
}
}
这段代码中,首先通过 document.forms["myForm"]["name"].value
获取输入的值,再对输入值是否为空进行判断,如果为空则弹出提示信息。
2.3. Vue 表单验证
Vue 提供了一种方便易用的表单验证方式,即通过绑定一个对象到表单元素上,以及提供相应的验证规则,来实现表单验证。
3. Vue 表单验证实现步骤
下面我们将介绍如何使用 Vue 来实现表单验证。
3.1. 安装 Vuelidate
在使用 Vue 表单验证之前,我们需要安装一个 Vue 插件 Vuelidate。这个插件提供了一些常用的验证规则,例如 required
、email
、minLength
、maxLength
等等。
npm install --save vuelidate
3.2. 引入 Vuelidate
在 Vue 项目中,我们需要在 main.js 中引入 Vuelidate,并将其挂载到 Vue 实例上。
import Vuelidate from 'vuelidate'
Vue.use(Vuelidate)
3.3. 定义验证规则
在组件中,我们需要定义一个 data 属性,并在其中声明要验证的表单元素。例如下面的代码中,我们要验证的元素有 name、email、password。
data() {
return {
name: '',
email: '',
password: '',
}
},
同时,我们还需要为每个表单元素定义它的验证规则。例如下面的代码中,我们给 name 元素定义了一个 required 规则,表示该元素必填。
validations: {
name: {
required,
},
email: {
required,
email,
},
password: {
required,
minLength: minLength(6),
},
},
这里我们使用了 Vuelidate 中提供的 required、email、minLength 等验证规则,需要注意的是,这些验证规则都需要从 Vuelidate 中导入。
3.4. 绑定表单元素
在 Vue 中,我们可以使用 v-model
指令来进行双向绑定,同时,我们还可以使用 v-bind:class
指令来动态绑定类名。下面的代码中,我们绑定了表单元素的值和验证结果,并动态绑定了类名。如果元素验证通过,则添加 is-valid
类名,否则添加 is-invalid
类名。
<div class="form-group">
<label for="name">Name:</label>
<input type="text" id="name" v-model.trim="$v.name.$model" v-bind:class="{'is-valid': !$v.name.$error, 'is-invalid': $v.name.$error}">
<div class="invalid-feedback" v-if="$v.name.$error">Name is required</div>
</div>
这里使用了 Vuelidate 提供的 $v 对象来获取表单元素的验证结果,$v.name.$error 表示 name 元素是否验证不通过。
3.5. 提交表单
在提交表单时,我们需要对每个表单元素进行验证,并判断是否全部验证通过。下面的代码中,我们定义了一个 submit 方法,在方法中对表单元素进行验证,并根据验证结果来决定是否提交表单。
methods: {
submit() {
this.$v.$touch();
if (this.$v.$invalid) {
return;
}
// submit form
}
},
这里使用了 $v 对象的 $touch() 方法来触发所有表单元素的验证,$v.$invalid 表示表单是否验证不通过。
4. 总结
通过 Vuelidate 插件,我们可以轻松地实现 Vue 表单验证,提高表单数据的合法性和安全性,给用户更好的交互体验。除了 Vuelidate 之外,还有一些其它的 Vue 表单验证插件,例如 VeeValidate、vee-validate等等,在实际开发中可以根据需要进行选择。
前端表单验证的目的是为了保证输入值的正确性,防止非法数据提交,并给出友好的提示信息。在 Vue 中,我们可以使用 Vuelidate 插件来实现表单验证,通过绑定表单元素、定义验证规则、提交表单等步骤来实现表单验证。