jquery mobile validate插件初始化次数太多

时间:2015-05-20 13:44:08

标签: jquery jquery-mobile jquery-validate

我正在尝试将jquery validate插件应用于jquery移动表单 我正在使用: jquery 2.1.1 jquery mobile 1.4.2 jquery验证插件1.11.0

在pagecreate事件上调用验证初始化:

$(document).on('pagecreate', '#page2', function(evt) {
    xxx.addCase.init();
});

init函数执行各种操作:

xxx.addCase.form.validator    = xxx.addCase.form.validate({
        ignore: ':hidden:not([class~=selectized],[name=contactName]), :hidden > .selectized, .selectize-control .selectize-input input',
        focusInvalid: false,
        focusCleanup: true,
        onclick: false,
        errorClass: 'text-danger',
        errorPlacement: xxx.addCase.validationErrorPlacement,
        success: xxx.addCase.validationSuccess,
        rules: {
            SerialNumber__c: 'required',
            ContactId      : 'required',
            SuppliedPhone  : { required: { depends: function(element) {
                if('' === xxx.addCase.email.val())
                {
                    return true;
                }
                return false;
            } }, phone: true, maxlength: 40 },
            SuppliedEmail  : { required: { depends: function(element) {
                if('' === xxx.addCase.phone.val())
                {
                    return true;
                }
                return false;
            } }, email: true, maxlength: 80 },
            Subject        : { required: true, maxlength: 255 },
            Description    : { required: false, maxlength: 32000 },
            contactName    : { maxlength: 121 }
        },
        messages: {
            SuppliedPhone  : { required: addCaseFormTranslation.validate.custom.required },
            SuppliedEmail  : { required: addCaseFormTranslation.validate.custom.required }
        }, 
        submitHandler: function(form) {
            //chiamata callback submit form
            xxx.addCase.form.submitter(form);
        }
    });

我注意到这个设置有很多不同的问题,所以我做了一个小穴居人调试把console.logs放在原始的jquery validate插件中:

validate: function( options ) {
    console.log('validating');
    ...

// constructor for validator
$.validator = function( options, form ) {
    console.log('constructor');
    console.log(options);
    console.log(form);
    this.settings = $.extend( true, {}, $.validator.defaults, options );
    this.currentForm = form;
    this.init();
};

这是我在页面加载后在firebug上获得的,显然是导致问题的原因(请考虑与console.log调用有关):

验证 构造函数 未定义 4验证 构造函数 对象{ignore =“:hidden:not([class~ = sele ... .selectize-input input”,focusInvalid = false,focusCleanup = true,altri elementi ...}

jquery validate被称为5(五!)次,第一次没有我的设置,所以我不知道为什么它会如此以及如何一次调用验证器。

0 个答案:

没有答案