0

我使用 jQuery 验证插件。

在我的情况下,验证发生在按钮单击时(尽管“onkeyup”、“onfocusout”方法已打开)。我为输入添加了一个自定义方法/规则。

问题是:

当我单击按钮时,验证仅发生在选择时,而不是输入时。在这种情况下,新规则将被忽略。但是当我在输入中输入文本时,规则正在起作用。 如何解决问题?

$(function() {
    // Added new method/rule
    $.validator.addMethod(
        "testm",
        function(value, element) {
            return this.optional(element) || /^[0-9]+$/.test( value );
        },
        "Use a valid username."
    );

    $("#ftest").validate({
        ignore: ".ignore, :hidden",
        focusInvalid: true,
        rules: {
            i1:"required",
            i2: {
                testm: true
            }
        },
        messages: {
            i1: "error1",

        }
    });

    // I need to check whether form is valid when I click the button
    $("#btest").click(function() {
        //alert('asd');
        var valid = $("#ftest").valid();
        if(valid)
        {
            alert('good');
        }
        else {
            alert('bad');
        }
    });
})

http://jsfiddle.net/qwJcf/

4

1 回答 1

0

为了使空输入验证失败,您需要从 testm 验证方法中删除此行:

this.optional(element) ||

http://jsfiddle.net/qwJcf/1/

于 2013-08-09T09:42:14.903 回答