jquery - 使用 jQuery Validation 根据两个不同的规则验证单个文本框会跳过第二条错误消息

标签 jquery jquery-validate

考虑以下 HTML:

<form id="frm">
    <input type="text" id="txt" name="txt" />
    <input type="submit" value="click me" />
</form>

我需要使用 jQuery Validation Plugin v1.13.1 和 jQuery 1.7.2 根据 2 个不同的规则验证文本框,因此:

$(function(){
    var validator = $('#frm').validate({
        errorPlacement: function (error, element) {
            element.attr('title', error.text());
        }
    });

    $.validator.addMethod('rule1', function (value, element) {
        return value != null && value.length;
    }, 'Rule 1 failed!');

    $.validator.addMethod('rule2', function (value, element) {
        return false;
    }, 'Rule 2 failed!');

    //Assign both rules to the text box.
    $('#txt').rules('add', { rule1: true, rule2: true });

    $('input[type="submit"]').click(function() {
        if(!validator.form()) {
            return false;
        }
    });
});
  • 点击上面的按钮(保持文本框不变)。
  • 将鼠标悬停在文本框上,显示规则 1 失败。
  • 现在,在文本框中输入一些内容,以便规则 1 正确验证。
  • 再次按下按钮。
  • 再次将鼠标悬停在文本框上。虽然Rule1已经成功验证,但是它仍然显示Rule1失败,而不是Rule2。

问题是为什么?这是关联的 JSFiddle 。 谢谢。

最佳答案

默认情况下,jQuery 验证会尝试从元素的 title 属性中读取错误消息(如果存在)。当然,由于您设置了标题中的错误消息,因此这将成为永久性的。这种奇怪的行为is apparently deprecated现在并且很快就会消失。

但是,与此同时,解决方法是在创建验证器时使用 ignoreTitle 选项:

var validator = $('#frm').validate({
    ignoreTitle: true,
    ...
}

请参阅此处的 fiddle :http://jsfiddle.net/dp5pLr8x/4/

关于jquery - 使用 jQuery Validation 根据两个不同的规则验证单个文本框会跳过第二条错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29998168/

相关文章:

jquery - Append jQuery 将 HTML 添加到具有绝对位置的下一个表格单元格

jquery - AJAX 验证思路 - 完成 ValidationSummary 和 ValidationMessage

ASP.Net CheckBoxList 的 jQuery 验证

php - 在 Codeigniter 中使用 jQuery 将选项添加到 DropDownList

javascript - 找出 OnClick 事件的注册方法?

javascript - 调用 AJAX 调用并让浏览器取消请求是否安全?

javascript - Jnotify jquery 插件用于 $_Get 消息

javascript - 在 JQuery 验证规则中使用字段名称变量

javascript - 为什么当我放入此行时我的 jQuery 出现错误?

jquery - 如何让不显眼的 jquery 远程验证器执行异步..?