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そして失敗しました(メッセージ)。

プラグインでは、デフォルトで「複合ルール」が複数のメソッドで処理されます。次の「複合ルール」は、たとえば4 つのメソッドで処理されます...

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

ただし、単一の方法で「複合ルール」を作成しようとしています。

したがって、論理的な解決策は、プラグインのように単純に行うことです。2 つの独自のカスタム メソッドを使用します。メッセージの配置をまったく変更する必要がないため、私はこの方法を好みます。これは、すべての「複合」ルールがプラグインによって内部的に処理される方法です。

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または a2を入力フィールドに入力して、ajax を「シミュレート」します。


「醜い」アプローチ:

または、プラグインによって制御されるデフォルトのコンテナとは別に、独自のメッセージ コンテナを作成して配置する必要があります。また、フィールドが検証に合格するたびにメッセージを消去するロジックも必要です。このソリューションは機能しますが、非常に型破りであるため、私は好みません。

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または a2を入力フィールドに入力して、ajax を「シミュレート」します。

于 2013-02-26T16:26:25.897 に答える