Javascript Yii2更改收音机时隐藏表单字段
我有一个Javascript Yii2更改收音机时隐藏表单字段,javascript,yii2,hide,onchange,Javascript,Yii2,Hide,Onchange,我有一个放射科医生,有2个值,1和2。 如果收音机设置为2,我想隐藏textInput。 我试过: $script = <<< JS $(document).ready(function () { if(document.getElementById('radio').val() == '2' ) { document.getElementById('textInput').style.display = 'none'; documen
放射科医生
,有2个值,1和2。
如果收音机设置为2,我想隐藏textInput
。
我试过:
$script = <<< JS
$(document).ready(function () {
if(document.getElementById('radio').val() == '2' ) {
document.getElementById('textInput').style.display = 'none';
document.getElementById('textInput').hide();
} else {
document.getElementById('textInput').show();
}
});
JS;
$this->registerJs($script);
echo $form->field($model, 'radio')->radioList(['1' => '1', '2' => '2'], ['id' => 'radio']);
echo $form->field($model, 'textInput')->textInput(['id' => 'textInput']);
$script=field($model,'radio')->放射科医生(['1'=>'1','2'=>'2'],['id'=>'radio']);
echo$form->field($model,'textInput')->textInput(['id'=>'textInput']);
有什么想法吗?您的代码存在多个问题
- 您没有使用
在任何地方加载/注册脚本$this->registerJs($script,\yii\web\View::POS\u READY)
- 当使用javascript
时,没有名称为document.getElementById()
但名称为.val()
的方法.value
- javascript中没有任何方法
和.show()
.hide()
- 然后,即使您完成了上述步骤,它仍然不起作用,因为您没有将任何事件绑定到收音机输入,您的脚本只是一个内联脚本,在加载页面时将调用它
- 您在
中提供的idradioList
将是所有无线电列表输入所在容器的radio
id
- 您需要隐藏输入的完整容器,而不仅仅是输入,以便标签也随着输入一起隐藏和显示
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);
$script=请显示你的html你是什么意思?对不起,我忘了在这里添加registerJs
,但它就在那里。@user2511599没关系。你可以记下其余的要点,并在页面顶部添加脚本,它会正常工作