this.init不是反应应用程序中的函数jquery验证插件

时间:2017-02-09 10:29:42

标签: javascript jquery validation reactjs

我在我的react应用程序中有表单,它通过jquery验证插件验证。

let validator = $('form').validate({
        errorClass:  'has-error',
        errorElement:'label',
    });
    validator.form();
    if ($('.has-error').length > 0) {
        $('.has-error').each(function (index) {
            $.validator().showErrors({prop:$(this).data('error')});
        });
    } else {
         /*work with data*/
}

所有错误消息都显示正常,但每次触发验证时,我都会在控制台中收到错误:

this.init is not a function

并将我链接到插件脚本中的代码:

$.validator = function( options, form ) {
    this.settings = $.extend( true, {}, $.validator.defaults, options );
    this.currentForm = form;
    this.init();
};

我该如何解决? UPD 1:在插件脚本代码下面我找到了这段代码:

$.extend( $.validator, {
//some code
prototype: {

        init: function() {
            this.labelContainer = $( this.settings.errorLabelContainer );
            this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
            this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
            this.submitted = {};
            this.valueCache = {};
            this.pendingRequest = 0;
            this.pending = {};
            this.invalid = {};
            this.reset();
//some code

由于这个init函数,它可能会触发错误异常吗?

1 个答案:

答案 0 :(得分:2)

我认为问题出在这一行:

$.validator().showErrors({prop:$(this).data('error')});

$.validator函数是构造函数,因此必须始终与new关键字一起使用。如果您将其称为普通函数this,则此函数内的window全局undefined(或strict mode中的init)没有{{1}}方法