jquery validationengine 的基本功能和使用我在此就不多讲了,大家可以参考
下载:https://github.com/posabsolute/jQuery-Validation-Engine
文档:http://posabsolute.github.io/jQuery-Validation-Engine/
我使用的版本为:jQuery.validationEngine v2.6.1
在使用异步验证的时候,对于多个字段验证,我做了扩展,在全局参数出,加了一个字段,ajaxField,在点击提交按钮的时候,对该字段进行处理,因为点击提交按钮,作者认为没有必要验证ajax异步验证字段,忽略了这些字段的验证,但是其实需要验证,该验证组件原理是如果该字段验证了,对该字段进行标记,所以对_checkAjaxFieldStatus方法进行改造,使其可以满足多个字段。
1.JS:
function ajaxValidationCallback(status, form, json, options){
}
jQuery(document).ready(function(){
$.validationEngineLanguage.allRules["ajaxFunction"] = {
"url": "sys/function/validate"
};
jQuery("#formFunID").validationEngine({
ajaxField:['fCode','fCaption'],
ajaxFormValidation: true,
onAjaxFormComplete: ajaxValidationCallback
});
2.表单:
<form id="formFunID" method="post" action="sys/function/create" style="width:100%">
<ul style="clear:both; padding-top:4px; margin-top:0px;">
<li><label><i class="biaoji">*</i>功能名称:</label><input id="fCaption" class="validate[required,ajax[ajaxFunction]] text-input" type="text" name="caption" /></li>
<li><label><i class="biaoji">*</i>功能编码:</label> <input id="fCode" class="validate[required,ajax[ajaxFunction]] text-input" type="text" name="functioncode" /></li>
</ul>
<div id="split">
<input id="cancel_btn" class="submit" type="button" value="取消"/>
<input id="submit_add" class="submit" type="submit" value="提交"/>
</div>
</form>
3.验证
@RequestMapping(value="/sys/function/validate",produces="text/plain;charset=UTF-8")
@ResponseBody
public String validateFunctionCode(HttpServletRequest request,HttpServletResponse response) throws IOException{
//页面中要验证的输入框中的值,接收参数值必须是fieldValue,组件内设置
String functionCode = request.getParameter("fieldValue");
//页面中要验证的输入框的ID,接收参数必须是fieldId,组件内设置
String fieldId = request.getParameter("fieldId");
System.out.println(request.getParameter("name"));
boolean isExists = false;
String msgErr = "";
String msgRig = "";
if (fieldId.equals("fCode")){
msgErr = "功能编码已存在";
msgRig = "功能编码可用";
SysFunction function = new SysFunction();
function.setFunctioncode(functionCode);
isExists = functionService.selectIsExistsFunction(function);
} else if (fieldId.equals("fCaption")){
msgErr = "功能名称已存在";
msgRig = "功能名称可用";
SysFunction function = new SysFunction();
function.setCaption(functionCode);
isExists = functionService.selectIsExistsFunction(function);
}
String out = "";
if (isExists) {
out = (new AjaxValidationFormResponse(fieldId,"false",msgErr)).toValidation();
} else {
out = (new AjaxValidationFormResponse(fieldId,"true",msgRig)).toValidation();
}
//返回json格式必须是[字段ID,布尔类型,显示信息]这种格式,因为在组件内解析的时候是这种格式
return out;
}
4.转JSON
package com.cnpc.oms.utils.validate;
import java.io.Serializable;
/**
* 前台页面提示
* @author 张昭
*
*/
public class AjaxValidationFormResponse implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
// the html field id
private String id;
// true, the field is valid : the client logic displays a green prompt
// false, the field is invalid : the client logic displays a red prompt
private String status;
// either the string to display in the prompt or an error
// selector to pick the error message from the translation.js
private String message;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
/**
* 验证框架使用
* @param fieldId
* @param s
* @param msg
*/
public AjaxValidationFormResponse(String fieldId, String s, String msg) {
id = fieldId;
status = s;
message = msg;
}
/**
* 提示使用
* @param msg
*/
public AjaxValidationFormResponse(String msg) {
message = msg;
}
/**
* 验证框架使用
* @return
@author 张昭
*/
public String toValidation() {
return "[\"" + id + "\","+status+",\"" + message + "\"]";
}
/***
* 前台提示使用
* @return
@author 张昭
*/
public String toMessage(){
return "{\"msg\":\""+message+"\"}";
}
}
5.jquery.validationEngine.js
修改:
$.validationEngine = {
fieldIdCounter : 0,
defaults : {
ajaxField:"",
......其他原有字段
}
}
_checkAjaxFieldStatus : function(fieldid, options) {
if (fieldid instanceof Array){
var fStatus = false;
for (var i=0;i<fieldid.length;i++){
if (options.ajaxValidCache[fieldid[i]] == true){
fStatus = true;
}else{
fStatus = false;
break;
}
}
return fStatus;
}else{
return options.ajaxValidCache[fieldid] == true;
}
}
6.jquery.validationEngine.js
修改_onSubmitEvent方法:
_onSubmitEvent : function() {
var form = $(this);
var options = form.data('jqv');
// check if it is trigger from skipped button
if (form.data("jqv_submitButton")) {
var submitButton = $("#" + form.data("jqv_submitButton"));
if (submitButton) {
if (submitButton.length > 0) {
if (submitButton.hasClass("validate-skip")
|| submitButton
.attr("data-validation-engine-skip") == "true")
return true;
}
}
}
options.eventTrigger = "submit";
// validate each field
// (- skip field ajax validation, not necessary IF we will perform
// an ajax form validation)
var r = methods._validateFields(form);
if (r && options.ajaxFormValidation) {
if (options.ajaxField != null && options.ajaxField != "") {
if (!methods._checkAjaxFieldStatus(options.ajaxField, options)) {
return false;
}else{
methods._validateFormWithAjax(form, options);
// cancel form auto-submission - process with async call
// onAjaxFormComplete
return false;
}
}else{
methods._validateFormWithAjax(form, options);
// cancel form auto-submission - process with async call
// onAjaxFormComplete
return false;
}
}
if (options.onValidationComplete) {
// !! ensures that an undefined return is interpreted as return
// false but allows a onValidationComplete() to possibly return
// true and have form continue processing
return !!options.onValidationComplete(form, r);
}
/*
* if (r && !methods._checkAjaxStatus(options)) { return false; }
*
* if(options.onValidationComplete) {
* options.onValidationComplete(form, r); return false; }
*/
return r;
}
相关推荐
- `js` 文件夹:主要的JavaScript文件,如`validationEngine.jquery.js`是核心库,`validationEngine.jquery.min.js`是压缩版本。 - `demo` 文件夹:包含示例代码和演示,可以帮助你快速理解和使用Validation Engine...
对于需要服务器端验证的场景,jQuery.validationEngine支持异步验证。通过`ajaxFormValidationMethod`和`ajaxFormValidationURL`参数,可以配置插件进行Ajax请求,验证用户输入的数据。 **六、国际化支持** `...
《jQuery.validationEngine控件在表单验证与数据库重名检测中的应用详解》 在Web开发中,表单验证是不可或缺的一环,它确保了用户输入数据的准确性和完整性。jQuery.validationEngine是一款强大的JavaScript验证...
**jQuery表单验证插件ValidationEngine详解** 在Web开发中,表单验证是必不可少的一环,它能够确保用户输入的数据符合预设的规则,从而提高数据的准确性和系统的稳定性。ValidationEngine是一款基于jQuery的强大的...
validationEngine是一款基于jQuery的表单验证插件,它提供了丰富的验证规则和自定义错误消息功能,使得在网页中实现复杂的用户输入验证变得简单易行。这个压缩包文件可能包含了经过修改后的validationEngine验证组件...
- **异步验证**:通过 `ajaxCall` 规则实现,例如邮箱地址的唯一性验证。 - **自定义事件**:插件提供了 `onValidationComplete` 回调函数,用于在验证完成后执行额外操作。 ## 5. 总结 jQuery Validation Engine ...
在jQuery Validation中,`remote`验证规则允许开发者通过异步请求(通常是AJAX)来验证用户输入。然而,当在Zepto.js中使用这个功能时,可能由于其默认的异步行为与jQuery Validation的期望不一致,导致问题出现。...
1. **异步验证**:通过 `ajaxFormValidator` 方法,可以实现表单数据的异步验证,例如检查用户名是否已存在。 2. **分组验证**:使用 `grouped validaion` 可以将一组相关字段作为一个整体进行验证。 3. **自定义...
8. **AJAX验证**:支持异步验证,可以与服务器端接口配合,验证更复杂的数据条件。 9. **自定义验证方法**:如果内置的验证规则不能满足需求,开发者可以创建自己的验证函数,增强验证功能。 为了使用jQuery ...
除了基础的验证规则,Validation Engine还支持复杂的验证场景,如依赖验证(当某个字段的值改变时,触发其他字段的验证)、Ajax异步验证(验证数据无需刷新页面)等。例如,我们可以定义一个自定义的验证函数,用于...
总的来说,`jquery.validationEngine.js`通过与jQuery的结合,提供了强大的表单验证功能,包括丰富的验证规则、自定义验证、友好的提示样式和异步验证。通过合理配置和使用,可以轻松实现动态、高效的表单验证,提升...
总的来说,jQuery Validation Engine是一个强大且灵活的工具,可以帮助开发者轻松处理表单验证问题,提高项目效率,优化用户界面。无论你是初学者还是经验丰富的开发者,这款插件都能为你带来便利。只需合理利用其...
9. **最佳实践**:获取关于提高表单性能和用户体验的建议,如延迟验证、异步验证等。 10. **社区资源**:可能会提供相关社区或论坛的信息,以便开发者在遇到问题时能获取更多的帮助和支持。 通过学习和应用...
8. **AJAX验证**:对于需要服务器端验证的场景,validationEngine可以发起AJAX请求进行异步验证,提高用户体验。 9. **集成其他框架**:除了基本的jQuery,validationEngine也可与其他前端框架(如Bootstrap、Vue、...
【标题】"(六)struts2 spring3 mybatis-3.2.3 jquery.validationEngine ajax表单验证 数据库重复"所涉及的技术栈主要包括Struts2、Spring3、MyBatis3.2.3以及前端的jQuery.validationEngine和Ajax技术。...
2. **ValidationEngine**:这是一个功能强大的验证引擎,支持多语言,提供多种预设验证样式,同时允许自定义CSS样式。 **三、常见验证类型** 1. **非空验证**:确保字段不为空,使用`required`规则。 2. **长度...
通过修改`validationEngine.jquery.css`文件,可以定制验证提示的样式,以适应不同的项目需求。 ### 9. 与Ajax结合 formValidator可以与Ajax提交相结合,验证通过后异步提交表单,提供无刷新的用户体验。使用`ajax...
"jquery.validationEngine.js"是jQuery.Validator的核心脚本,包含了所有验证功能的实现。这个文件通常需要在HTML页面中引入,以启用验证功能。 总的来说,jQuery.Validator通过其丰富的验证规则、多语言支持、...