2016-07-28 8 views
0

以下のような条件に基づいて、1つのフィールドに対して異なるエラーメッセージを表示したいと考えています。jQuery同じフィールドの条件付きエラーメッセージの妥当性確認

jQuery(document).ready(function() { 
    //... 


    ..// 

    $("#aID").validate({ 
      rules: { 
       reason: "required", 
       aic: "required" 
       aAmt:{ 
        required: function (element) {   
        var err; 
        var new_balance = Math.round(100*beg_balance)/100 - Math.abs(Math.round(100*adjustAmount)/100); 
      if ((parseInt(aAmount) >= parseInt(a_limit_amount))) { 
       err = "123";       
       return true; 
      } 
      else if (new_balance) 
      { 

       err = "321"; 
       return true; 
      } 
      return false; 
        } 
       } 
      } 
      }, 
      messages: { 
       reason:"Please select a reason code.", 
       aic: "Please select a credit AIC.", 
       pwdOverride: err 
      }, 

    }); 

あり

messages: { 
    RoutingNumber: { 
    required:"Message1", 
    digits: "Message2", 
    rangelength: "Message 3" 
    } 
} 

以下のようなオプションがある。しかし鉱山は、このプラグインのいずれかのそれを構築し、検証メソッドを持っていません。 どのように達成するための助け?あなたがaAmtのための私の他のループを見れば、検証に建てられたため、私は何を意味

は次のとおりです。rulesをそれはに収まらない、jQueryの検証のような検証に建てられた:あなたはここのようにいくつかの深刻な構文の問題を持っているList of built in validation methods

+0

* "しかし、私はjqueryから検証をビルドしていません" *〜 "私の"は何を参照していますか? jQuery Validateプラグインをインストールしないと、上記のコードを使用することはできません。 – Sparky

+0

@sparky実行したい検証を更新しました。 – JNPW

+0

* "私は、jqueryから検証をビルドしていません"とはどういう意味ですか? [jQuery Validate plugin](https://jqueryvalidation.org)がインストールされていますか? – Sparky

答えて

4

以下の私のコメントに示されています。

$("#aID").validate({ 
    rules: { 
     reason: "required", 
     aic: "required" // <- MISSING a comma here 
     aAmt: { 
      required: function(element) { 
       var err; 
       var new_balance = Math.round(100 * beg_balance)/100 - Math.abs(Math.round(100 * adjustAmount)/100); 
       if ((parseInt(aAmount) >= parseInt(a_limit_amount))) { 
        err = "123"; 
        return true; 
       } else if (new_balance) { 
        err = "321"; 
        return true; 
       } 
       return false; 
       } // <- REMOVE extra brace 
      } 
     } 
    }, 
    messages: { 
     reason: "Please select a reason code.", 
     aic: "Please select a credit AIC.", 
     pwdOverride: err // <- no such field defined in 'rules' 
    } 
}); 
  1. あなたは正しいaicルールの後にコンマが欠落しています。

  2. あなたの条件関数内に余分な中括弧があります。

  3. messagesの中にはpwdOverrideという名前のフィールドがありますが、rulesに定義されているフィールドはありません。検証規則がないフィールドで検証エラーメッセージを定義するにはどうすればよいですか?

  4. カスタムメッセージの条件付き機能は、rulesオブジェクトではなく、messagesオブジェクト内に含める必要があります。 rulesはルールを定義するためのものであり、messagesはメッセージを定義するためのものです。

    $("#aID").validate({ 
        rules: { 
         reason: "required", 
         aic: "required", 
         aAmt: "required" 
        }, 
        messages: { 
         reason: "Please select a reason code.", 
         aic: "Please select a credit AIC.", 
         aAmt: { 
          required: function(element) { 
           var err = "this field is required"; // default message 
           var new_balance = Math.round(100 * beg_balance)/100 - Math.abs(Math.round(100 * adjustAmount)/100); 
           if ((parseInt(aAmount) >= parseInt(a_limit_amount))) { 
            err = "123"; 
           } else if (new_balance) { 
            err = "321"; 
           } 
           return err; // <- display the custom message 
          } 
         } 
        } 
    }); 
    

    あなたは私達にあなたのフォームのHTMLマークアップを示していないので、私は唯一の一般的な概念実証の例を提供することができます:​​

    を更新しました

注記

  • JavaScriptコンソールには、これらの構文エラーの多くが記載されているので注意してください。
  • 適切に書式を設定してコードを意図しているため、読みやすくトラブルシューティングが容易です。書式設定された後は、不要な括弧/括弧を簡単に見つけることができます。
+0

ありがとうございました。メッセージセクションのコードを使用して助けました。私は必須のフィールドではないが、それ以外の上記の同じ条件を適用するパスワードのための別のフィールドがありますか?しかし、私は最後のelseブロックアクションではfalseを返すにもかかわらず、条件のために動作します(エラーメッセージが返されない場合)ページ同じフォームsubmitを使用します。 pwdのための私のコードを更新しました。 – JNPW

+0

@JNPW、答えられた後、元の質問の内容全体を置き換えないでください。それは既存の回答を切り離し、今後の読者には役に立たない。新しい質問がある場合は、新しい質問を投稿してください。ありがとう。 – Sparky

関連する問題