验证input,先验证ajax外的规则(删除data-validation-engine中的ajax规则),验证之后自己写ajax来验证,最后再恢复原来的规则
function validateAjax(input,isValidate){ var $input = $(input), engine = $input.attr("data-validation-engine"); //验证除ajax外的其他规则 if(isValidate) { //先移除validation中的ajax验证 $input.attr("data-validation-engine", engine.replace(/,ajax\[.*?\]/, "")); //先通过其他规则的验证 var validateResult = $input.validationEngine("validate"); //恢复原来的ajax验证 $input.attr("data-validation-engine", engine); if (!validateResult) return false; } //获取验证规则 var index = engine.indexOf(",ajax"); if(index < 0) return true; var ajaxRule = engine.substring(index); ajaxRule = ajaxRule.replace(",ajax[", "").replace("]]",""); //根据验证规则获取url,可添加 var url = "", msg = null; switch(ajaxRule){ case ‘a‘: url = "a.html";break; case ‘b‘: url = "b.html";break; } //自定义验证ajax,ajax验证直接用validationEngine默认的ajax验证模式,后台返回值格式["id",boolean] if(url != ""){ $.ajax({ type:‘GET‘, url:url, data:{filedValue:$input.val()}, dataType:‘JSON‘, success:function(data){ if(!data[1]){ //错误信息直接写input的ajaxError属性中 msg = $input.attr("ajaxError"); } } }); } //如果验证失败,则显示失败信息 if(msg != null) { $input.validationEngine("showPrompt", msg, "error"); } return msg == null; }
form表单全部验证,先调用validate验证所有内容(默认会跳过ajax验证),然后遍历所有有data-validation-engine属性的input,调用上面的方法,验证ajax,然后返回验证结果
function validateAjaxBeforeSubmit(form){ var $form=$(form), result=true; //先验证所有信息 if(!$form.validationEngine("validate")) return false; //遍历跳过的ajax信息 $form.find("[data-validation-engine]").each(function(){ if(validateAjax(this, false)) return true; else { //验证结果设为false并跳出each循环 result = false; return false; } }); return result; }
时间: 2024-10-05 20:11:04