@Kibastus
Начинающий веб-разработчик

Причина this.init is not a function при запуске валидации в react приложении?

Есть форма на реакте, валидация которой проходит через jquery validation плагин. Валидирую следующим способом:
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 {
 /*обрабатываем данные*/}

Ошибки все что надо выводит, но стопается и выдает в консоль
this.init is not a function

Ругается на это место в скрипте плагина:
$.validator = function( options, form ) {
		this.settings = $.extend( true, {}, $.validator.defaults, options );
		this.currentForm = form;
		this.init();
	};

Как быть, как исправить?
UPD: в скрипте плагина нашел это(этот кусок идет ниже чем тот на который ссылается ошибка):
$.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
  • Вопрос задан
  • 866 просмотров
Решения вопроса 1
@Kibastus Автор вопроса
Начинающий веб-разработчик
Ошибка была в том, что $.validator() - суть конструктор, и поэтому вместо него надо было использовать уже созданный экземпляр validator в строке вывода ошибок.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@emp1re
prop:$(this) === .bind(this)? Попробуйте сами контекст передать. Явно в this нету ссылки на эту функцию
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы