代码之家  ›  专栏  ›  技术社区  ›  Beginner m latha

在yii2中创建依赖下拉列表

  •  0
  • Beginner m latha  · 技术社区  · 7 年前

    这是yii2中的两个活动表单字段。

    <?= $form->field($model, 'navigation_type')->dropdownList(['Module'=>'Module','Screen'=>'Screen']) ?>
    
    <?= $form->field($model, 'showInUrl')->dropdownList([0=>'No',1=>'Yes']) ?>
    

    当我点击 Screen ,第二个字段应更改为 Yes .当我点击 Module ,应改为 No .我只能存钱 0 1 给数据库。

    我该怎么做?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Muhammad Omer Aslam    7 年前

    好吧,你需要把 change 使用下面的javascript/jquery将事件发送到第一个下拉列表。在视图顶部添加脚本并提供 id 两个下拉列表。

    $this->registerScript("
        $('#navigation_type').on('change',function(){
          if($(this).val() == 'Module'){
              $('#showInUrl').val(0);
           }else{
              $('#showInUrl').val(1);
           }
    });",\yii\web\View::POS_END);
    
    <?= $form->field($model, 'navigation_type')->dropdownList(['Module'=>'Module','Screen'=>'Screen'],['id'=>'navigation_type']) ?>
    
    <?= $form->field($model, 'showInUrl')->dropdownList([0=>'No',1=>'Yes'],['id'=>'showInUrl' ])?>
    

    除上述解决方案外,您还应该研究 DepDropDown by kartik 这减少了你的努力 一个最大值,你只需要整合,它工作得很好。

        2
  •  1
  •   Janki Rathod    6 年前
    Using Kartik/select Dropdown You Can Code like These : 
    
    <div class="navigation-form">
    
    <?= $form->field($model, 'navigation_type')
    ->widget(kartik\select2\Select2::className(), [
            'data' => ['Module'=>'Module','Screen'=>'Screen'],
            'options' => ['multiple' => false],
            'pluginOptions' => [
                'placeholder' => 'Select Module',
                    ],
            ])
    ?>
    <?= $form->field($model, 'showInUrl')->widget(kartik\select2\Select2::className(),[
                'data' => [0=>'No',1=>'Yes'],
                'options' => ['multiple' => false],
                'pluginOptions' => [
                    'placeholder' => 'ShoW URL',
                ],
    ]) ?>
    
    </div>
    
    <script type="text/javascript">
        $(document).ready(function(){
          $('#navigation-navigation_type').on("change",function(e){
            var sel_val = $(this).select2("val");
            if(sel_val=='Screen'){
              $('[name="navigation[showInUrl]"]').val('Yes').trigger('change');
            }
            if(sel_val=='Module'){
                $('[name="navigation[showInUrl]"]').val('No').trigger('change');
            }
        });