2016-10-07 9 views
1

これは、ユーザー名とパスワードが個別に入力されたかどうかを検証するために作成した検証コードです。特定の条件のメッセージを結合する方法は?

$('form').validate({ 
    messages: { 
     username: " Please enter a username.", 
     password: " Please enter a password.", 
    }, 
    errorPlacement: function (error, element) { 
     error.appendTo(".error-message"); 
    } 
}); 

ユーザー名とパスワードの両方が入力されていない場合、どのように組み合わせメッセージを表示しますか? 例:これはusernameAndPasswordのみ火災でもないusernamepasswordというカスタムバリデータを追加し

$.validator.addMethod("usernameAndPassword", function(value, element) { 
     return $('#username').val().length || $('#password').val().length; 
}, "Please enter a username and password."); 

$('form').validate({ 
    rules: { 
    username: { 
     usernameAndPassword: true, 
     required: { 
      depends: function(){ 
      return $('#password').val().length; 
      } 
     } 
    }, 
    password: { 
     required: { 
      depends: function(){ 
      return $('#username').val().length; 
      } 
     } 
    } 
    }, 
    messages: { 
    username: { 
     required: "Please enter a username." 
    }, 
    password: { 
     required: "Please enter a password." 
    } 
    }, 
    errorPlacement: function (error, element) { 
    error.appendTo(".error-message"); 
    } 
}); 

:あなたはjQueryの検証を使用しています。コードから想定するとEnter a username and a password.

+1

私はあなたがこのライブラリでできるとは思わない。すべてのエラーは個別にリストされています。私は、これを行うことができる他のライブラリは認識していません。エラーメッセージを組み合わせると複雑なロジックが多く発生し、ほとんどのメリットはありません。 –

+0

リクエストはこのプラグインではうまく動作しません。各フィールドは、各ルールごとに一度に1つのメッセージを取得します。すべてのフィールドとルールに対して1つのメッセージを同時に要求しています。フィールドが2つしかない場合は、カスタム検証スクリプトを作成することをお勧めします。 – Sparky

答えて

0

は、あなたがこのような何かを行うことができますプラグインusernamepasswordの両方で必要な検証は、別のものが存在する場合にのみ実行されるように定義され、そうでない場合はusernameAndPasswordを引き継ぐことができます。

+2

いい考え。しかし問題は、メッセージオブジェクトを1回だけ評価することです。したがって、最初にユーザー名またはパスワードの値が何であっても、他のすべてのケースで表示されます。 – Pixel92283

+0

@pranjal良いスポット!更新されたソリューションを参照してください。また、ここに:https://jsfiddle.net/u8x32q0e/2/ –

+0

デフォルトのメッセージを抑制し、エラーマップ配列に基づいて単一のメッセージを構成するために 'showErrors'オプションを使用するだけではどうですか? – Sparky

関連する問題