0

有没有办法根据验证结果格式化消息。我有以下

jQuery.validator.addMethod("feed", function(value, element) {
    var retVal = true;
            //Ajax call here which returns 
            var retMsg = ajax()

            if(retMsg == "one") {
               //Show error as "not valid url"
            } else if(retMsg == "2") {
               //Show error as "not reachable url"
            }
    return retVal;
}, << CUSTOMIZE MESSAGE HERE BASED ON Validation OUTCOME >>);
4

1 回答 1

0

对于 Validate 插件中的每个方法,规则只是通过/失败。当它们失败时,您会收到一条消息;当他们通过时,没有消息。 return true在您的自定义方法上并且您通过了(没有消息)......return false并且您失败了(消息)。

在插件中,默认情况下,“复合规则”使用多种方法处理。下面的“复合规则”用四种方法处理,例如......

rules: {
    myfield: {
        required: true,
        digits: true,
        minlength: 5,
        email: true
    }
}

但是,您正试图用一种方法来制定“复合规则”。

因此,合乎逻辑的解决方案是您只需像插件一样进行操作;有两种独特的自定义方法。我更喜欢这种方法,因为我们根本不必篡改消息放置。这就是插件在内部处理所有“复合”规则的方式。

jQuery.validator.addMethod("feedvalid", function(value, element) {
    //Ajax call here which returns 
    var retMsg = ajax()

    if (retMsg == "one") {
        return false; // failed, show message
    } else {
        return true;
    }
}, "not a valid url");

jQuery.validator.addMethod("feedreach", function(value, element) {
    //Ajax call here which returns 
    var retMsg = ajax()

    if (retMsg == "2")  {
        return false; // failed, show message
    } else {
        return true;
    }
}, "not a reachable url");

模拟:http: //jsfiddle.net/At555/

在输入字段中键入 aone或 a以“模拟”您的 ajax。2


“丑陋”的方法:

或者,您必须将自己的消息容器与插件控制的默认容器分开创建和放置。您还需要在每次字段通过验证时清除消息的逻辑。这个解决方案有效,但它非常非常规,所以我不喜欢它。

jQuery.validator.addMethod("feed", function(value, element) {
    //Ajax call here which returns 
    var retMsg = ajax()

    if (retMsg == "one") {
        $('#myErrContainer').text("not valid url");
        return false; // failed
    } else if (retMsg == "2") {
        $('#myErrContainer').text("not reachable url");
        return false; // failed
    } else {
        $('#myErrContainer').text();
        return true; // passed
    }
}, "");

模拟:http: //jsfiddle.net/vnpG4/

在输入字段中键入 aone或 a以“模拟”您的 ajax。2

于 2013-02-26T16:26:25.897 回答