ValidationEngine已经降低了对前端的表单验证的工作量。大多数情况下,我们使用validationengine验证形式的几种方法。

1是用普通形式提交的。这是一例validationengine验证不通过形式。

2使用Ajax提交表单,但不使用Ajax验证。

这也是在使用Ajax请求之前检查验证是否已被传递的一种简单方法,例如:

复制代码代码如下所示:

验证没有返回

如果(!$(形式# ajaxform)。ValidationEngine(验证))返回;

$ ajax({

类型:邮政

网址:$(# ajaxform)。Attr(行动),

数据:$(# ajaxform )Serialize(),

DataType:HTML

成功:函数(数据){

XXXX }

});



3、使用普通表单提交,但用ajax验证,这种方式有点纠结。提交表单时,无法通过Ajax验证,也可以提交表单。在这种情况下,许多在线示例被转换为源代码,下面是截图。



这种方法在当前形势下是可行的。修改方法本身不推荐。它可能会影响其他地方。

复制代码代码如下所示:

功能beforecall(形式、期权){

如果(窗口控制台){

console.log(后的表单提交验证通过,回调前阿贾克斯提交);

};

返回true;

};



功能ajaxvalidationcallback(地位、形式、JSON、期权){

如果(窗口控制台){

console.log(状态);

};

如果(状态=真){

警告()表单有效!;

}

};

jQuery(文档)Ready(函数()){

jQuery(#之),ValidationEngine({

ajaxformvalidation:真的,是否提交使用AJAX / /

ajaxformvalidationmethod:'post ' / Ajax提交,发送数据的方式

OnAjaxFormComplete:ajaxvalidationcallback / / Ajax验证表单提交完成后

onbeforeajaxformvalidation:beforecall / /表单提交验证通过Ajax后,在回调之前提交

});

});



beforecall这个方法没有被调用,因此它不能用。

4使用ajax验证并使用ajax提交表单,这种方式很纠结,修改源代码的方式不好。

对于第三种和第四种方法,解决方案如下:

自定义属性控制项被添加到Ajax验证表单的表单标记中。控件的值是控制Ajax验证的ID(多个控件用逗号分隔)。

复制代码代码如下所示:





两个属性添加URL(Ajax请求的地址)和每个控制误差,需要验证。

复制代码代码如下所示:





两个全局数组在Javascript中声明。

复制代码代码如下所示:

VaR controlID =新(阵列); / /保存验证不通过控件ID

var错误=新的(数组);通过验证保存的消息



想法是让控件属性对这种形式的价值标签(每个ID控制逗号),Ajax请求使用遍历,当验证不通过控件ID和提示信息添加到controlID和错误和消息。当提交表单判断controlID是空的,不是空的圆形显示消息。

复制代码代码如下所示:

$(函数(){())

无功ajaxform2controls = $(形式# ajaxform2controls );

表单提交时

$(ajaxform2controls)。提交(函数(){)

ajaxform2control(ajaxform2controls);

返回false;

});

验证控件丢失焦点

valcontrols(ajaxform2controls);

});



表单提交方法:

复制代码代码如下所示:

功能ajaxform2control(obj){

当返回错误信息时,显示错误信息

如果(controlid.length > 0){

Alertinfo();

返回false;

}

如果(!$(obj)。ValidationEngine(验证))return false; / /验证没有AJAX验证控件的使用(现场不是Ajax验证是正常的验证,返回)

$ ajax({

类型:邮政

网址:$(obj)。Attr(行动),

数据:$(obj)。Serialize(),

DataType:HTML

成功:函数(数据){

xxxxxx

}

});

}



为窗体添加焦点事件

复制代码代码如下所示:

需要验证控件的窗体

功能valcontrols(ajaxform2controls){

获取/需要使用Ajax验证控件

无功controlsstr = ajaxform2controls.attr(控制);

未定义的返回属性

如果(typeof(controlsstr)=未定义| | controlsstr.length <= 0)返回;

单独访问控制

无功控制= controlsstr.split( / / G);

对于(在控件中的var i){

将焦点从事件中添加

$(# +控制{我})。Blur(function(){

如果($)(这个)(长度0)返回false;

重新排列数组

controlid.length = 0;

errors.length = 0;

错误消息

VaR误差= $(this)。Attr(错误);

$ ajax({

键入:获取

网址:$(this)。Attr(URL),

数据:$(这)Serialize(),

DataType:文本

成功:函数(数据){

如果(数据= 真){

验证没有将错误消息传递到数组中。

ControlId.push(控制{我});

Errors.push(错误);

消息

Alertinfo();

}

}

});

});

}

}



错误提示信息:

复制代码代码如下所示:

弹出消息

功能alertinfo(){

如果(controlid.length > 0){

(我在对VaR controlID){

/ / validationengine方法ID指定的提示。

用法: / / $(# ID)。ValidationEngine(showprompt

在这个元素上创建一个提示,3个状态:通行证

$(# + controlID {我})。ValidationEngine(showprompt错误{我}

}

}

}



所以当我们提交表格第三或第四种方式,可以叫controlID提交前。