【问题标题】:jQuery Validate passes with only 1 field passing validationjQuery Validate 仅通过 1 个字段通过验证
【发布时间】:2013-03-20 07:08:36
【问题描述】:

不完全确定,也找不到允许 x 个验证中的 1 个通过整个表单的验证的设置。

我不得不使用 .rules("add" 函数,因为我的字段在 name 属性中有数组键。 当所有字段都失败时,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>

提前致谢!

【问题讨论】:

标签: jquery jquery-validate


【解决方案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"
            }
        }
    });

});

【讨论】:

  • 我以为我尝试在字段名称周围加上引号,但它失败了。但是,再次尝试,它按预期工作。非常感谢!
【解决方案2】:

经过一番搜索,它似乎是一个known issue,带有验证插件的最新版本。当您在添加规则时使用messages 属性时会发生这种情况。

你有两个直接解决这个问题的方法:

编辑:作者用this commit修复了这个问题,所以你可以添加第三个解决方案:

【讨论】:

  • 感谢您的调查!我会留意下一个稳定版本。
猜你喜欢
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多