2

如何设置我的验证器,以便在更改此表单上任何输入的值时检查表单上的所有字段。我试过了

$("#form-user-edit").validate({
        keypress : true
    });

但它不起作用。

我做了一个 jsFiddle http://jsfiddle.net/NickBunich/pDrTF/1/

问题是,当您在第一个输入中输入某些内容时 - 其他输入变为启用状态,但如果您随后在第二个输入中输入某些内容,则将其擦除,然后在第一个输入中擦除文本 - 错误消息和突出显示将保留。

4

3 回答 3

3

以下答案演示了插件内置回调事件函数的正确用法。外部回调函数的创建是多余且不必要的。


你的代码...

$("#form-user-edit").validate({
    keypress : true
});

你不能简单地“化妆”或“发明”.validate()选项。 keypress:不存在。有关唯一可用选项,请参阅此页面

如何设置我的验证器,以便在更改此表单上任何输入的值时检查表单上的所有字段。

已经有一个选项被调用onkeyup,默认情况下它是打开的。(这仅检查每个按键事件的活动输入。)

您可以修改onkeyup以满足您的需要。这将检查每个按键事件 的整个表单。

$(document).ready(function() {
    $("#form-user-edit").validate({
        // other rules and options,
        onkeyup: function (element, event) {
            if (event.which === 9 && this.elementValue(element) === '') {
                return;
            } else if (element.name in this.submitted || element === this.lastActive) {
                if($("#form-user-edit").valid()) {
                    $("#form-user-edit .error").removeClass('error');
                };
            }
        }
    });
});

工作演示:http: //jsfiddle.net/CMT5r/

工作演示包含修改为按要求运行的 OP 代码。

于 2013-01-31T16:39:49.310 回答
1

例如,您必须:

  • 指定检查规则

     $("#form-user-edit").validate({
           rules: {
             name: "required",
             email: {
               required: true,
               email: true
             }
           },
           messages: {
             name: "Please specify your name",
             email: {
               required: "We need your email address to contact you",
               email: "Your email address must be in the format of name@domain.com"
             }
           }
        })
    

本教程将为您提供有关验证的大量解释,请参见此处

于 2013-01-31T11:05:19.053 回答
1

您可以添加一个change事件处理程序来执行此操作

$("#form-user-edit").on('change', ':input', function(){
    if($("#form-user-edit").valid()) {
        $("#form-user-edit .error").removeClass('error')
    }
})

演示:提琴手

于 2013-01-31T12:08:17.387 回答