2009-06-10 17 views
18

jqueryのバリデータープラグインのメソッドを作成しました。これはリモートルールのように機能します。違いは、(ajaxレスポンスに基づいて)動的エラーメッセージを表示したいということです。jqueryバリデーターaddmethodカスタムメッセージ

jQuery.validator.addMethod("duplicate", function(value, element, params) { 
    var object_settings = this.settings; 
    params.data[$(element).attr("name")] = value; 
    $.post(params.url, params.data, function(response) { 
     if (response == 'true'){ return true; } 
     else { 
      object_settings.messages[element.name] = response; 
      return false; 
     } 
    }, 'text'); 
}, ''); 

は、それは(あなたがフィールドをもう一度確認する場合は、メッセージが表示されている)、それはメッセージを設定します....並べ替えの...動作しますが、最初にそれを表示しません。

提案がありますか?

(多分リモートルールは、この機能を提供しています...私はドキュメントに何かを見つけることができませんでした)

答えて

15

ここでは、オブジェクトのshowErrors関数を呼び出すために必要なソリューションが....です:

jQuery.validator.addMethod("duplicate", function(value, element, params) { 
    var validator = this; 
    params.data[element.name] = value; 
    $.post(params.url, params.data, function(response) { 
     if (response == 'true'){ return true; } 
     else { 
      var errors = {}; 
      errors[element.name] = response; 
      validator.showErrors(errors); 
      return false; 
     } 
    }, 'text'); 
}, ''); 

(ライン917から919)をjquery.validate.jsに「リモート」から取られ、元の元で...

+4

デフォルトのエラーメッセージは、私がこれを行うときにカスタムメッセージを書き込むことです。 – aqs

9

は同様に、この解決策を探していた、とこれを見つけましたこれに

object_settings.messages[element.name] = response; 

:あなたはこの行を変更した場合に十分な、

$.validator.messages.duplicate = response; 

これは私のために動作します。私はここにそれを見つけた: http://blogs.teamb.com/craigstuntz/2009/01/15/37923/

+0

+1は 'showErrors'を呼び出すよりも良いでしょう –

6

私はサイトhttp://blogs.teamb.com/craigstuntz/2009/01/15/37923/#comment-125774に記載されているプロセスに従って成功しました。

動的メッセージを使用してメソッドを呼び出すと、そのメッセージが表示されます。例えば

$.validator.addMethod("validatePremium", function(value, element, param) { 

    if(Condition)  

    { 
     $.validator.messages.validatePremium = "your message here"; 
     //enter code here 
     //... 
     return false; 
    } 

    }, $.validator.messages.validatePremium); 
3

これは私

var errorMsg = '', $valid = false; 
$.validator.addMethod("methodName",function(val, elem){ 
    $.ajax({ 
     url:'your_script.php', 
     type:"POST", 
     dataType:"json", 
     data : {}, 
     success:function(response){ 
     if(response.success == false){ 
      errorMsg = response.msg; 
      $valid = response.success; 
     } 
     else{ 
      $valid = true; 
     } 
     } 
    }); 
    $.validator.messages["methodName"] = errorMsg; 
    return $valid; 
},''); 

のために働いていた両方の場所で「複製」(addMethod機能第一引数この場合には、あなたのメソッド名 で「methodNameの」を交換することを確認してくださいaddMethod関数の本文$ .validator.messages ["methodName"])

関連する問題