jQuery.validate:没有被解雇的处理程序

时间:2013-11-27 12:47:16

标签: jquery jquery-validate

我的页面上运行了以下javascript:

$("form").validate({
    invalidHandler: function (event, validator) {
        var errors = validator.numberOfInvalids();
        if (errors) {
            console.log(errors);
        }
        validator.focusInvalid();
    },
    showErrors: function (errorMap, errorList) {
        console.dir(errorList);
    },
    submitHandler: function (form) {
        console.log(form);
    }
});
$("form").valid();

我在我自己的函数中调用这个javascript,而不是直接将它绑定到任何 submit 事件。

我的问题是传递给.validate()的选项对象中的那些处理程序都不会运行;没有记录任何控制台消息。

验证确实有用,无效字段用CSS类修饰。

因此,如果验证正在运行,为什么这些事件没有运行?

修改

说< form>元素很长将是轻描淡写。但是,在构建/测试时,只有三个< input>元素具有required属性。此外,因为我是异步发布而不是提交,所以< form> element没有填充的action属性。

<form action="" name="order" id="order" class="margin-b-50">

    <label for="frm-order-name">Order Name</label>
    <input type="text" id="frm-order-name" name="frm-order-name" class="form-control" required="required" data-val-required="You must enter an order name" />

    <label for="frm-username">Username</label>
    <input type="text" id="frm-username" name="frm-username" class="form-control" required="required" data-val-required="You must enter your username" />

    <label for="frm-password">Password</label>
    <input type="password" id="frm-password" name="frm-password" class="form-control" required="required" data-val-required="You must enter your password" />
</form>

1 个答案:

答案 0 :(得分:0)

引用OP:

  

“我的问题是,传递给.validate()的选项对象中的所有处理程序都不会运行;没有任何控制台消息被记录。验证确实有效,无效字段用于修饰一个CSS类。所以如果验证正在运行,为什么这些事件没有运行?“

我认为这不可行。如果验证工作正常,则必须触发那些回调函数。

您的浏览器是否支持console.logconsole.dir

这种变化对我来说很好......

$(document).ready(function () {

    $('#order').validate({
        invalidHandler: function (event, validator) {
            var errors = validator.numberOfInvalids();
            alert('invalidHandler fired - no of errors: ' + errors);
            console.log('invalidHandler fired - no of errors: ' + errors);
            validator.focusInvalid();
        },
        showErrors: function (errorMap, errorList) {
            console.log('showErrors fired');
            console.dir(errorList);
        },
        submitHandler: function (form) { 
            alert('submitHandler fired - form is valid');
            console.log('submitHandler fired - form is valid');
            return false;
        }
    });

    $('#order').valid();

});

DEMO:http://jsfiddle.net/B5N6q/

这是你的版本,也适合我:http://jsfiddle.net/B5N6q/1/