jquery validationEngine ajax验证优化

验证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;
}



转载于:https://my.oschina.net/doubleTing/blog/507972

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值