【问题标题】:Yii2 - Show form fields based on dropDownListYii2 - 基于 dropDownList 显示表单字段
【发布时间】:2015-12-20 21:27:28
【问题描述】:

我有以下下拉列表

<?= $form->field($model, 'moradaalternativa')
    ->dropDownList(
        [
        'Não' => 'Não',
        'Sim' => 'Sim'],
        ['prompt'=>'Faça a sua escolha'],
    );
?>

我想做的是: 如果值为 = Sim,则其他一些被 css 类隐藏的表单域会显示在 dropDownList 下方,如果值为 = Não,则表单域会再次从页面中隐藏。

我知道有一个类似 javascript 的“onchange”属性,但我不知道如何将其应用于此效果,或者即使我需要使用它。

有什么想法吗?

【问题讨论】:

  • 你能分享你的成功代码吗?谢谢之前

标签: php drop-down-menu yii2 onchange


【解决方案1】:

很简单,你只需要:

$(document).ready(function () {
    $(document.body).on('change', '#your-id', function () {
        var val = $('#your-id').val();
        if(val > 0 ) {
          $('.class').hide();
        } else {
          $('.class').show();
        }
    });
});

只需根据需要更改名称即可。 Yii2 可以封装,然后直接把代码放到视图文件中,但最好是放到 JS 文件中:

<?php
$script = <<< JS

code here

JS;
$this->registerJs($script);
?>

【讨论】:

  • 是的。但是我如何将 ID 归因于 ActiveForm 类的 dropDownList 字段。 dropDownList 是属于 Yii2 而不是普通的 HTML select 元素?
  • 每次都是同一个ID,使用Firebug查看ID是什么,然后使用它,它总是一样的。
  • 嗯,它有点工作......问题是 Sim 或 Não 值都显示隐藏的表单字段,如果当我选择 Não 值时表单显示它不会再次隐藏:(
  • 只需将要隐藏的字段包装在容器 div 中并使用该 id,并使用 css (display:none) 设置初始显示属性 此外,您可能需要将 > o 更改为显式关于你想要什么。只需对其进行测试并使用 console.log 来查看您获得的值等
  • 没错。我做到了。它现在正在工作。只需要更改 val == 'Nao' 之类的条件...非常感谢...我会接受答案:)
猜你喜欢
  • 2019-05-19
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
相关资源
最近更新 更多