Несколько проблем с вашим кодом
- Вы нигде не загружаете / не регистрируете скрипт, используя
$this->registerJs($script,\yii\web\View::POS_READY)
.
- Не существует метода с именем
.val()
, но .value
при использовании javascript document.getElementById()
.
- Нет никакого метода
.show()
и .hide()
в javascript
- Тогда, даже если бы вы выполнили описанные выше шаги, это все равно не сработало бы, потому что вы не связываете какое-либо событие с радиовходами - ваш скрипт - это просто встроенный скрипт, который будет вызываться, когда страница загружен.
- Идентификатор
radio
, который вы указываете в radioList
, будет id
контейнера, в котором находятся все входы списка радиостанций.
- И вам необходимо скрыть весь контейнер ввода, а не только ввод, чтобы метка также была скрыта и отображалась вместе с вводом.
Поскольку вы использовали тег javascript, который я использую addEventListner
, чтобы связать событие, см. Приведенный ниже код и добавьте его в верхней части окна.
$script = <<< JS
document.querySelectorAll("#radio input[type='radio']").forEach(function(element){
element.addEventListener('click',function(){
if(this.value == '2' ) {
document.querySelector('#textInput').parentElement.style.display = 'none';
} else {
document.querySelector('#textInput').parentElement.style.display = 'block';
}
});
});
JS;
$this->registerJs($script, \yii\web\View::POS_READY);