Как после reset формы заново подключить yii.ActiveForm?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

Как после reset формы заново подключить yii.ActiveForm?

Сообщение slo_nik »

Доброй ночи.
Имеется форма, в которой, в зависимости от выбранного значения select валидируются разные наборы динамических полей.
Если выбрать первое значение, появляется два поля, а если второе, то пять.
Как сделать так, чтобы при переключении между вариантами не слетала валидация?
Использую вот такой код:

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

$(function () {
    $('form').find('.cargo-data').on('change.yii', function(){
        var $form = $(this).parents('form');

        var input = $form.find('input');
        $form.on('keyup', function(){

            $(this).find('.class-input').each(function(){
                var input = $(this);

                $form.yiiActiveForm('add', {
                    id: input.attr('id'),
                    name: input.attr('name'),
                    container: '.field-' + input.attr('id'),
                    input: '#' + input.attr('id'),
                    error: '.help-block',
                    validateOnType: true,
                    validate: function(attribute, value, messages, deferred, $form) {
                        yii.validation.required(value, messages, {message: "Заполнить обязательно!"});
                        yii.validation.number(value, messages, {
                            pattern: /^\s*\d+[,|.]*\d*\s*$/,
                            message: "Должно быть числом!"
                        });
                    }
                });

            });
        });
        $form.yiiActiveForm('resetForm');
    });
});
После валидации подготавливаю данные и отправляю ajax

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

$('form').on('beforeSubmit', function(e){
   // собираю данные из формы, отправляю ajax.
}
Если начать заполнять поля из какого-либо варианта, а потом перейти на другой вариант, то в предыдущем наборе полей очищаются значения, ошибки, если они были, но уже в текущем наборе ничего не работает. До 'beforeSubmit' ход не доходит. Если же я сразу выбрал какой-то из вариантов, заполнил поля, то 'beforeSubmit' срабатывает.
Как сделать так, чтобы при переключении между вариантами не слетала валидация?
Ответить