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()
  • 然后,即使您完成了上述步骤,它仍然不起作用,因为您没有将任何事件绑定到收音机输入,您的脚本只是一个内联脚本,在加载页面时将调用它
  • 您在
    radioList
    中提供的id
    radio
    将是所有无线电列表输入所在容器的
    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);

$script=请显示你的html你是什么意思?对不起,我忘了在这里添加
registerJs
,但它就在那里。@user2511599没关系。你可以记下其余的要点,并在页面顶部添加脚本,它会正常工作