按键时不会触发jQuery验证

时间:2015-05-21 20:48:39

标签: javascript jquery jquery-validate

按键时,Jquery验证不检查是否为真。它在从元素聚焦后触发。按下完成后,按键完成验证检查。为什么是这样?这里有我的代码

   $('input[name=roleName]').keypress(function () {

        $('form').validate({
            rules: {
                roleName: {
                    required: true,
                    isRoleUsed: true
                }
            },
            messages: {
                roleName: {
                    required: "You have to enter role name"
                }
            }
        });

    });

1 个答案:

答案 0 :(得分:1)

.validate()方法永远不会进入按键事件处理程序。它只是插件的初始化方法,只能进入DOM ready事件处理程序。

然后在初始化插件后自动捕获keyup事件。

$(document).ready(function() {

    $('form').validate({
        rules: {
            roleName: {
                required: true,
                isRoleUsed: true
            }
        },
        messages: {
            roleName: {
                required: "You have to enter role name"
            }
        }
    });

});

DEMO:http://jsfiddle.net/9hf0pr6a/1/

注意,默认情况下,验证是" Lazy",这意味着在评估required验证规则之前,您将尝试填写表单。直到第一次单击提交按钮后才会捕获keyup个事件。

否则,您可以将keyup行为更改为" Eager"通过覆盖onkeyup选项进行验证。

$(document).ready(function() {

    $('form').validate({
        onkeyup: function(element) {
            this.element(element);
        },
        rules: {
            roleName: {
                required: true,
                isRoleUsed: true
            }
        },
        messages: {
            roleName: {
                required: "You have to enter role name"
            }
        }
    });

});

DEMO:http://jsfiddle.net/9hf0pr6a/