yii.activeForm onBlur validationDelay - тормоза

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
mikola123
Сообщения: 42
Зарегистрирован: 2016.04.22, 22:39

yii.activeForm onBlur validationDelay - тормоза

Сообщение mikola123 »

Добрый день!
При выводе ошибок, возникает эффект заторможенности.
Когда возникает событие onBlur у Input.type="text", ошибка выводится не сразу, а по таймауту. Я сначала думал, да неужто фреймворк настолько перегружен, что ему нужно время, чтобы обработать простейшую проверку на Required. Input теряет фокус, на мышке выполнилось событие Click и вот только появляется ошибка. Из ActiveForm убрал все, что только можно, но все равно тормозит. Начал копать по коду, оказалось, есть такая проверка:

Код: Выделить всё

data.settings.timer = window.setTimeout(function () {
            if (data.submitting || $form.is(':hidden')) {
                return;
            }
            $.each(data.attributes, function () {
                if (this.status === 2) {
                    this.status = 3;
                    $form.find(this.container).addClass(data.settings.validatingCssClass);
                }
            });
            methods.validate.call($form);
        }, validationDelay ? validationDelay : 200);
Данный код срабатывает от сюда:

Код: Выделить всё

$input.on('blur.yiiActiveForm', function () {
                if (attribute.status == 0 || attribute.status == 1) {
                    validateAttribute($form, attribute, true);
                }
            });
В validateAttribute четвертым параметром идет validationDelay, ребят можно это исправить и четвертым параметром поставить 1, для чего нужны эти 200мс? Если поставить 0, то любимая JS конструкция validationDelay ? validationDelay : 200 выдаст 200.
Я у себя захардкодил, т.к. по другому плясать не выйдет.
mikola123
Сообщения: 42
Зарегистрирован: 2016.04.22, 22:39

Re: yii.activeForm onBlur validationDelay - тормоза

Сообщение mikola123 »

Тикет завел на GitHub
Закрыто