jQuery验证插件 - '必需'规则行为奇怪

时间:2014-02-27 16:30:44

标签: jquery jquery-validate required

我正在将这个jQuery Validation Plugin)与Bootstrap结合使用,我已经用它创建了5个表格&带着很多痛苦。

我现在有JSFiddle,但我的密码字段表现得很奇怪...... 如您所见,我为密码设置了required规则。如果我删除浏览器中的所有项目符号并转到下一个字段,则保持不变,如果已经标记正确,则保持正确,如果没有标记,则保持未标记。 未标记错误,错误消息未显示!

我只能通过首先在密码字段上生成required错误并显示然后删除所有字符来显示我的minlength规则错误消息单击提交按钮(仅当所有字段均未处于错误状态时才可用)。

经过大量检查后,我找到了onfocusout选项。这可以是truefalse,默认设置为true如网站所述,

  

[It]在模糊上验证[s]元素(复选框/单选按钮除外)。如果未输入任何内容,则会跳过所有规则,除非该字段已标记为无效。

我想,这肯定是原因。但经过大量的谷歌搜索,结果发现没有其他人有这个问题(至少,由于onfocusout规则)。一篇帖子确实提到“required规则是一个例外”(对onfocusout规则?)。


底线 我无法使required规则错误生效,但提交或首次生成时出现异常minlength错误消息。 然后,它确实出现了。
结论 :错误可以产生,但不能在blur上产生。
问题 :如何解决这个问题?


我的密码输入字段

<input type="password" class="form-control" id="passw" name="passw" value="nochange" maxlength="20" required="required" placeholder="123456789" />

我的密码规则

passw: {
    required: true,
    minlength: 5,
    maxlength: 20
},

我在发出错误时添加了console.log条消息 - 甚至没有调用。我验证了我的代码和HTML,对所有内容进行了三重检查,但我仍然无法找到错误...

1 个答案:

答案 0 :(得分:2)

引用OP:

  

“我无法获得所需的规则错误,但提交或首次生成minlength错误消息时会出现异常。然后,它会显示出来....我验证了我的代码和HTML,三重 - 检查了一切,但我仍然找不到错误“

这不是错误。这是默认行为。来自文档:“...它专为不显眼的用户体验而设计,尽可能少地使用不必要的错误消息让用户烦恼”

引用OP:

  

“经过大量检查后,我找到了onfocusout选项。这可以是truefalse,默认设置为true正如网站所述”

不完全。默认情况下,onfocusout 有效;在不破坏插件的情况下,您无法将其设置为true。您只能将其设置为false(禁用它)或者您可以使用自己的功能覆盖它。

文档:"Set to a Function to decide for yourself when to run validation. A boolean true is not a valid value."

修改onfocuout选项,以便在离开现场后立即触发所有验证。

$('#yourform').validate({
    // your rules & options,
    onfocusout: function (element, event) {
        this.element(element);
    }
});

DEMO:http://jsfiddle.net/p4K7S/