jQuery Validate传递只有1个字段传递验证

时间:2013-03-20 07:08:37

标签: jquery jquery-validate

不完全确定并且无法找到允许x个验证中的1个在整个表单上通过验证的设置。

我必须使用.rules(“add”函数,因为我的字段在name属性中有数组键。 当所有字段都失败但是如果1个字段具有有效内容时,jQuery Validate按预期工作,整个表单将通过验证。

<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>

提前致谢!

2 个答案:

答案 0 :(得分:1)

经过一些搜索,它似乎是known issue与最后一个版本的validate插件。在添加规则时使用messages属性时会发生这种情况。

您有两个直接解决此问题的方法:

编辑:作者使用this commit解决了问题,因此您可以添加第三个解决方案:

答案 1 :(得分:1)

您首先不需要使用rules('add')方法,因此您可以轻松完全避免使用the bug

只需点击documented guidelines for names that contain brackets,然后用引号括起来。

工作演示: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"
            }
        }
    });

});