@DragonChris
Junior full stack)

Скрыть блок после выбора некоторого значения в dropDownList YII2?

Я хочу что б после выбора "Нет" в dropDownList YII2 у меня прятался другой блок

<?= $form->field($model, 'license', ['options' =>['onchange'=>'getSalutationValue'] )->dropDownList(['y' => 'Есть, 'n' => 'Нет']) ?>


Вот моя функция js :
function getSalutationValue() {
    		var label = this.value;
                if(label == 'n' ) {
    		document.getElementById('driver').style.display='none';
                }
    		}


Но не работает, как я понимаю функция не вызывается и значение не передается.
Как правильно написать, спасибо заранее.
  • Вопрос задан
  • 554 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
1. Вы вызываете функцию, а значит необходимо указывать скобки т.е. не getSalutationValue а getSalutationValue()
2. Откуда в функции возьмется this если Вы его не передаете? нужно передавать
3. Вы вешаете событие onchange на div в котором содержится выпадающий список, а не на сам выпадающий список

итого нужно как-то так:
function getSalutationValue(value) {
    if(value == 'n' ) {
        document.getElementById('driver').style.display='none';
    }
}


<?= $form->field($model, 'license')->dropDownList([
        'y' => 'Есть', 
        'n' => 'Нет'
    ], [
        'onchange' => 'getSalutationValue(this.value)'
    ]) 
?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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