jQuery 验证插件无法在 Keyup 上进行验证

Jac*_*ack 1 javascript asp.net-mvc jquery jquery-validate

我使用 jQuery 验证插件,我的表单可以验证如下(假设我有 2 个字段 A 和 B):

它有效:
单击 A并键入一些内容然后删除。然后我点击了 B。在这种情况下,将显示验证消息。

它不起作用:
我 **单击 A 并且不输入任何内容。然后我单击 B。在这种情况下,与字段 A 相关的相关验证消息未显示。但我希望它如上所示。

我尝试在验证方法中使用 onsubmit、onkeyup 和 onclick 参数,但没有任何意义。我怎样才能提供这个?


剃刀:

jQuery(function () {
    $.validator.setDefaults(
    $("#myform").validate({
        //onsubmit: false, ???
        //onkeyup: true, ???
        //onclick:true, ???
        onkeyup: function(element){this.element(element);},
        rules: {
            'Applicant.Name': "required",
            'Applicant.Surname': "required"
        },
        messages: {
            'Applicant.Name': "Please enter your Name",
            'Applicant.Surname': "Please enter your Surname"
        }
    })
); 

});
Run Code Online (Sandbox Code Playgroud)

Spa*_*rky 5

您的代码:

jQuery(function () {
    $.validator.setDefaults(
        $("#myform").validate({ .... })
    ); 
});
Run Code Online (Sandbox Code Playgroud)

重要提示:您不能将.validate()方法放在.setDefaults(). 这没有道理。

  • .validate()方法用于在表单上初始化插件(带有选项)。

  • .validator.setDefaults()方法用于设置将应用于页面上所有表单的选项,但是,此方法不会初始化任何内容。

如果要为 设置选项#myform,请使用.validate()...

jQuery(function () {
    $("#myform").validate({
        // options only for #myform
    });
});
Run Code Online (Sandbox Code Playgroud)

如果要设置在页面上的所有表单上使用的选项,请使用.validator.setDefaults(). 然后.validate()在每个表单上使用...

jQuery(function () {

    $.validator.setDefaults({
        // options for all forms on page
    });

    $("#myform").validate({
        // options only for #myform
    });

    $("#myform2").validate({
        // options only for #myform2
    });

});
Run Code Online (Sandbox Code Playgroud)

默认插件操作:

默认情况下,该插件该字段被另一个事件初始验证之前不会进行任何“key-up”验证。

所以这是默认onkeyup回调函数的正确修改版本,因此它将提供即时 onkeyup验证。

演示:http : //jsfiddle.net/QfKk7/

onkeyup: function (element, event) {
    if (event.which === 9 && this.elementValue(element) === "") {
        return;
    } else {
        this.element(element);
    }
}
Run Code Online (Sandbox Code Playgroud)

您的代码:

//onsubmit: false, ???
//onkeyup: true, ???
//onclick:true, ???
Run Code Online (Sandbox Code Playgroud)

这些选项绝不能设置为true

文档:

onfocusout
类型:Boolean 或 Function(
) 在 blur 上验证元素(复选框/单选按钮除外)。如果未输入任何内容,则跳过所有规则,除非该字段已被标记为无效。设置为 Function 以自己决定何时运行验证。 布尔值 true 不是有效值


onkeyup
类型:Boolean 或 Function()
验证 keyup 上的元素。只要该字段未标记为无效,就不会发生任何事情。否则,将在每个按键事件上检查所有规则。设置为 false 以禁用。设置为 Function 以自己决定何时运行验证。 布尔值 true 不是有效值


onclick
类型:Boolean 或 Function()
单击时验证复选框和单选按钮。只要该字段未标记为无效,就不会发生任何事情。否则,将在每个按键事件上检查所有规则。设置为 false 以禁用。设置为 Function 以自己决定何时运行验证。 布尔值 true 不是有效值


onsubmit
类型:Boolean 或 Function()
在提交时验证表单。只要该字段未标记为无效,就不会发生任何事情。否则,将在每个按键事件上检查所有规则。设置为 false 以禁用。设置为 Function 以自己决定何时运行验证。 布尔值 true 不是有效值