slo_nik
@slo_nik

Как валидировать несколько dropDownList?

Добрый день.
На странице сайта есть три формы, в каждой из которых есть по два dropDownLIst для выбора городов.
Все формы для одной модели.
$form = ActiveForm::begin([
    'id' => 'calcTopForm',
    'enableAjaxValidation' => true,
]);
/***************/
$form->field($model, 'from')->dropDownList(RoutesCities::getAutocompleteList(),[
            'prompt'=> 'Выбрать...',
        ])->label(false)
/*************/
$form->field($model, 'to')->dropDownList(RoutesCities::getAutocompleteList(),[
            'prompt'=> 'Выбрать...',
        ])->label(false)

Первая и последняя подключаются на странице через $this->render()
<?= $this->render('includes/calc-form', ['model' => $model]) ?>

Средняя форма вписана прямо на странице.
Обычная валидация работает без проблем. Но мне надо подключить ajax валидацию.
Тут у меня возникает проблема.
Ajax валидация не хочет корректно работать для выпадающих списков. ID списков конечно же совпадают, это и не даёт нормально работать ajax валидации. Попытка подменить id при помощи jquery не дала результата, валидация вообще отказывается работать.
Как правильно подключить ajax валидацию для этих списков, если id списков совпадают?

p.s.
И ещё один маленький вопрос.
Почему пропадает боковой скролл браузера после того, как получен ответ сервера через ajax? После перезагрузки браузера скролл восстанавливается.
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
slo_nik
@slo_nik Автор вопроса, куратор тега Yii
Решение оказалось очень простым.
Упустил из виду, что можно передать параметром id формы. Теперь, при подключении формы в разных участках файла, я передаю параметром id формы и валидация работает на всех списках.
$this->render('includes/calc-form', ['model' => $model, 'dimensions' => $dimensions, 'idForm' => 'BottomForm'])

и в самой форме указываю этот id
$form = ActiveForm::begin([
    'id' => $idForm,
    'enableAjaxValidation' => true,
]);

Всё, ajax валидация работает на всех списках, во всех формах на странице.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы