表单验证在网络应用的开发中扮演非常重要的角色,有效的表单验证可以在前端防止无效或者不合法的数据输入,保持数据的一致性和安全性。在许多情况下,复杂的表单验证规则常常使得表单开发变得棘手和耗费时间,这时候,使用ValidationEngine来提高表单验证效率就显得尤为重要。
ValidationEngine是一个非常方便易用的表单验证插件,它可以快速地增强表单验证功能,减少表单开发时间和成本。在下面的文章中,我将通过简介、安装、使用及其优化等方面介绍ValidationEngine使得它成为您表单工具包的重要组成部分。
1.简介
ValidationEngine是由JHTML、jQuery和Ajax技术开发的表单验证插件。它提供了一套开箱即用的基于Ajax的表单验证工具,可以轻松地验证HTML表单元素,满足Web开发的表单验证需求。 ValidationEngine支持多种表单验证规则,可以进行自定义,支持实时验证和服务器验证等各种验证方式。
2.安装
2.1引入jQuery库和ValidationEngine插件库
ValidationEngine依赖于jQuery库,所以要使用它,您需要先引入jQuery库。可以在头部如下方式引入jQuery库:
```html
```
接下来,在head元素中引入ValidationEngine插件库:
```html
```
上面的示例中,我们引入了ValidationEngine的JavaScript文件`jquery.validationEngine.js`和CSS文件`valtidationEngine.jquery.css`。
2.2配置
为了使ValidationEngine正常工作,我们需要对它进行一些配置。要开始使用ValidationEngine,我们需要调用其初始化函数并传递一些配置属性给它。
```javascript
$(document).ready(function() {
$("#form1").validationEngine({
//需要配置的属性
});
});
```
在上述代码中,我们针对id值为form1的表单进行了初始化。你可以根据你的表单id和需要的属性进行配置。下面是一些常用的属性和选项:
- validationClass:指定验证失败时应用的CSS class。
- scroll:配置整个页面是否发生滚动,以滚动到第一个验证失败的表单元素。
- promptPosition:指定在元素正下方或正上方或右侧或左侧等提示位置。
- autoPositionUpdate:指定提示内容的位置是否随页面滚动而更新。
更多配置选项可以查看[ValidationEngine的官方文档](https://github.com/posabsolute/jQuery-Validation-Engine/blob/master/doc/documentation.md)
3.使用
3.1 单字段验证
使用ValitationEngine进行单字段验证非常简单。只需使用`class="validate[规则]"`对需要验证的字段进行配置即可。
规则可以是已经存在的静态规则,也可以通过JavaScript动态创建。下面是一个使用ValidationEngine验证帐号和密码的例子:
```html
```
上面的示例中,我们使用`class="validate[required]"`对用户名字段进行了验证。Required是ValidationEngine中一个静态内置的规则。类似地,我们对密码字段使用了`class="validate[minSize[6]]"`,则可验证其最小长度为6位。
您甚至可以对更多字段应用相同的规则。例如,使用class属性`class="validate[required] text-input"`,则可以使用相同规则验证用户名和密码字段。
3.2.多字段验证
ValidationEngine不仅可以用于单个字段的验证,它也支持多字段验证。当一个表单中的字段需要基于其他字段的值进行验证时,这一个功能将变得非常有用。例如,当我们需要验证密码和确认密码时,ValidationEngine提供的功能将会让我们的工作变得非常的简单。
```html
```
上述代码对密码字段设置了`minSize`验证规则,对确认密码字段设置了ValidationEngine中的`equals`规则,该规则将拥有与“password”字段相同的值。使用相同的class属性应用所有规则。
3.3.自定义规则
您可以自定义验证规则来满足特殊的验证需求。添加自定义的规则可以使用addRule和addMethod方法。addRule方法用于添加单个规则;addMethod方法可以添加多个规则。
```javascript
$(document).ready(function(){
$.validationEngine.addRule(
"requiredIfEmailChecked", //规则名称
"必修字段,如果邮箱被选中", //规则提示
function(value) {
var emailChecked = $("#email").prop("checked");
if (emailChecked && !value) {
return false;
}
return true;
}
);
//添加自定义组合规则
$.validationEngine.addMethod(
"emailOrMobile", //规则名称
"请输入正确的邮箱或手机号码", //规则提示
function(value, element) {
var regEmail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
var regMobile = /^1[3456789]\d{9}$/;
return (regEmail.test(value) || regMobile.test(value));
}
);
$("#form1").validationEngine({
promptPosition: "centerRight",
autoHidePrompt: true
});
});
```
在上述代码中,我们添加了两个自定义规则,`requiredIfEmailChecked`和`emailOrMobile`。 这些新规则是通过ValidationEngine的addRule和addMethod方法添加的。
完整的自定义规则API可以在[ValidationEngine的API文档](https://github.com/posabsolute/jQuery-Validation-Engine/blob/master/doc/documentation.md#api)中找到。如果您需要高级规则设置,该文档也可以为您提供帮助。
4.优化
在实际情况中,我们往往会遇到需要对数据进行校验和验证的情况,并且一个界面会使用很多的表单元素,验证所有表单元素需要很长的时间,消耗络费和客户端的性能。
在这种情况下,我们可以寻找方法来最小化表单验证时间并提高表现。可以使用如下程序优化ValidationEngine:
4.1.Lazy Loading
关于Lazy Loading的概念,它指的是将表单元素一次验证改为失去焦点验证。只有字符串的长度在客户端完成的整个验证过程之前是未知的。
许多表单元素在加载之前可能不会被正确填写,这意味着如果我们在整个验证过程之前强制进行表单验证,我们只能无用地消耗用户的时间和客户端的资源。因此,Lazy Loading应该考虑在表单应用程序上。
可以启用此行为,以实现懒加载而不是一次性验证。以下是实现Lazy Loading的程序的示例:
```javascript
$(document).ready(function() {
$("#form1").validationEngine({
autoHidePrompt: true, //当验证规则全部通过后立即隐藏提示消息
autoHideDelay: 4000, //当验证规则全部通过后立即隐藏提示消息
validationEventTrigger: "blur", //指定触发失去焦点时验证表单数据。默认值触发于keyup或submit
scroll: false //防止页面出现滚动条
});
});
```
4.2.验证结果的缓存
通常每次提交表单时都会全部验证,这使得整个过程非常缓慢,并且浪费了很多客户端资源。ValidationEngine提供了针对这个问题的优化解决方案,在这种情况下,验证结果可以被缓存。
在ValidationEngine中,可以使用验证命中的表单元素缓存,以减少服务器和客户端资源的消耗。以下示例演示ValidationEngine如何缓存验证结果:
```javascript
$(document).ready(function() {
$("#form1").validationEngine({
cache: false, //是否开启缓存验证结果。默认值是:false
});
});
```
5.总结
ValidationEngine是一个强大的表单验证工具,它方便快捷地添加各种验证规则,支持多种表单验证方式,最大限度地减少开发时间和成本。使用上述的优化方法可以大大提高ValidationEngine的效率,同时提升用户体验,让我们在开发表单验证功能时更加高效和便捷。