0

完全にはわかりません。x個の検証のうちの1つがフォーム全体の検証に合格できるようにする設定が見つかりません。

フィールドのname属性に配列キーがあるため、.rules( "add"関数を使用する必要がありました。すべてのフィールドが失敗した場合、jQuery Validateは期待どおりに機能しますが、1つのフィールドに有効なコンテンツがある場合、フォーム全体が検証に合格します。

<form id="new_user_session">
   <input class="input-block-level sq-input" id="user_session_email" name="user_session[email]" placeholder="email address" type="text">
   <input class="input-block-level sq-input" id="user_session_password" name="user_session[password]" placeholder="password" type="password">
</form>

<script type="text/javascript">
  jQuery(function() {
      jQuery('#new_user_session').validate();

      jQuery("#user_session_email").rules("add", {
          email: true,
          messages: {
              email: "Please insert a valid email address",
              required: "Please insert your email address"
          },
          required: true
      });

      jQuery("#user_session_password").rules("add", {
          messages: {
              required: "Please insert your password"
          },
          required: true
      });
  });
</script>

前もって感謝します !

4

2 に答える 2

1

いくつか検索した後、それは検証プラグインの最後のバージョンの既知の問題のようです。messagesこれは、ルールを追加するときにプロパティを使用するときに発生します。

この問題に対する2つの即時の解決策があります。

編集:作成者はこのコミットの問題を修正したので、3番目の解決策を追加できます:

  • Githubからソースをダウンロードします
于 2013-03-20T09:25:36.150 に答える
1

そもそもこの方法を使用する必要がないので、バグを完全rules('add')に簡単に回避できます。

角かっこを含む文書化されたガイドラインnamesに従い、引用符で囲みます。

動作中のデモ:http : //jsfiddle.net/K65e5/

$(document).ready(function () {

    $('#new_user_session').validate({
        rules: {
            'user_session[email]': {
                email: true,
                required: true
            },
            'user_session[password]': {
                required: true
            }
        },
        messages: {
            'user_session[email]': {
                email: "Please insert a valid email address",
                required: "Please insert your email address"
            },
            'user_session[password]': {
                required: "Please insert your password"
            }
        }
    });

});
于 2013-03-20T15:56:19.553 に答える