【问题标题】:One dropdown down depends on two dropdowns in codeigniter with一个下拉菜单取决于 codeigniter 中的两个下拉菜单
【发布时间】:2020-09-23 08:15:44
【问题描述】:

这里我有两个独立的下拉菜单:“子公司”和“角色”,还有第三个下拉菜单取决于这两个下拉菜单。基本上我想要实现的是,如果选择的“角色”不是“经理”和“管理员”,则显示第三个下拉菜单“经理”,其选项取决于子公司。 现在我可以让所有的经理都依赖子公司,我需要做的是创造一个条件,只在角色!=='经理'&&角色!=='管理员'时显示经理列表。 这是view.php

<div class="form-group col-md-4">
              <label for="pwd">Sub Company Name</label>
               <div class="alert-danger"><?php echo form_error('Subcom'); ?></div>
              <select  class="form-control" id="Subcom"  name="Subcom" >
              <option value="">Select Sub Company</option>
              <?php 
                    
            foreach($company_name as $row )
            {
                echo '<option value="'.$row->company_name.'" '.set_select('Subcom', $row->company_name).'>'.$row->company_name.'</option>';
             }
            ?> 
              </select>
            </div>
            <div class="form-group col-md-4">
              <label for="pwd">Role</label>
              <div class="alert-danger"> <?php echo form_error('role'); ?></div>
              <select class="form-control" id="role" name="role" placeholder="Select Role">
               <option value="">Select Role</option></div>
                 <?php 
                    
            foreach($role_name as $row )
            {
               echo '<option value="'.$row->id.'" '.set_select('role', $row->role_name).'>'.$row->role_name.'</option>';
             }
            ?>
              </select>
            </div>
            <div class="form-group col-md-4"  >
              <label  for="pwd">Manager</label>
              <div class="alert-danger">  <?php echo form_error('manager'); ?></div>
              <select class="form-control" id="manager" name="manager"  placeholder="Select Manager" style="display:none"  disabled>
             <option value="">Select Manager</option>
             </select>
            </div>

这是脚本

<script type="text/javascript">

  $(document).ready(function(){
  $(' #Subcom, #role').on('change' , function() {
  var company_name = $('#Subcom').val();
  var role = $('#role').val();
 if( company_name!==''&& role !== '' && role !=='manager' && role !== 
  'admin')
  {
  //alert('ok');
  $('#manager').prop('disabled', false);
   
   $.ajax({
     url:"<?php echo base_url()?>getManager",
     type: "POST",
     data: { 'company_name' : company_name},
     dataType:'json',
     success: function(data){
       
       console.log(data);
       false;
       $('#manager').html(data.manager);  
       $('#manager').show();

     },
     error: function(event){
       console.log(event);
      alert('Error occur...');
     }
    
   });
}else {
//alert('sgsg');
  $('#manager').prop('disabled', true);
  $('#manager').hide();
  }
 });
});

</script> 

这里是控制器

 public function getManager()
{
  //echo json_encode ($_REQUEST); die; 
   //print_r($_REQUEST);
    //die;
  $company_name = $this->input->post('company_name');
  $getallmanager = $this->project_model->get_manager_query($company_name);
  $getallstaff = $this->project_model->get_all_staff($company_name);
  $all_the_mangers = '';
  $all_the_staffs = '';
  if(count($getallmanager)>0)
  {        
    foreach ($getallmanager as $manager){
      //if(role!=='manager')
      $all_the_mangers .='<option value="' .$manager->first_name.'">'.$manager->first_name.'</option>';
      
    }
    
  }
  if(count($getallstaff)>0)
  {        
    foreach ($getallstaff as $staff){
      $all_the_staffs .='<option value="' .$staff->first_name.'">'.$staff->first_name.'</option>';
    }
    
  }
  $result = array('manager'=>$all_the_mangers,'staffs'=>$all_the_staffs);
  echo json_encode($result);die;
  
}

}

这是模型:

 public function get_manager_query($company_name)
{
    $query = $this->db->get_where('user_login', array('company_name' => $company_name,'role'=>'manager'));
    return $query->result();
} 
 public function get_all_staff($company_name)
{
    $query = $this->db->get_where('user_login', array('company_name' => $company_name,'role !='=>'manager'));
    return $query->result();
}

【问题讨论】:

    标签: php ajax codeigniter dropdown dependent-type


    【解决方案1】:

    它只是传递一个 var 来显示或隐藏。

    在您的controller 文件中传递data['role_admin'] = 1;

    在您的view 文件中

    if($role_admin==1){ 
      // show your Manager code
    }
    

    【讨论】:

      【解决方案2】:

      style="display:none"disabled 添加到经理选择中,这样它就不会在加载时显示。也选择不需要值,如果你想设置一个特定的选项而不是你需要在这样的循环中做:

      foreach($company_name as $row )
      {
          echo '<option value="'.$row->company_name.'" '.set_select('Subcom', $row->company_name).'>'.$row->company_name.'</option>';
      }
      

      另外,最好将表单错误移到选择之前,而不是用它包装选项。

      <script type="text/javascript">
      
      $(document).ready(function(){
          $('#Subcom,#role').on('change' , function() {
              var company_name = $('#Subcom').val();
              var role_name = $('#role').val();
      
              if(company_name !== '' && role_name !== 'manager' && role_name !== 'admin')
              {
                  $('#manager' ).prop('disabled', false);
      
                  $.ajax({
                      url:"<?php echo base_url()?>getManager",
                      type: "POST",
                      data: { 'company_name' : company_name},
                      dataType:'json',
                      success: function(data){
                      //alert('ok');
                          console.log(data);
                          $('#manager').html(data.manager);
                          $('#manager').show();
                      },
                      error: function(event){
                          console.log(event);
                          alert('Error occur...');
                      }
                  });
              }
              else
              {
                  $('#manager').prop('disabled', true);
                  $('#manager').hide();
              }
          });
      });
      
      </script>
      

      编辑:以供将来参考,这是最终代码 https://jsfiddle.net/Lo50z6q8/

      【讨论】:

      • 非常感谢您的精彩解释,我根据您的建议更新了我的代码,但它不起作用,经理选择框在任何情况下都没有显示,请您看看
      • 你有 ajax console.log 吗?还要检查你的html。您可能没有关闭某些标签或更改了某些 ID。如果仍然无法使用,请发布您的更新代码
      • 是的,我已经在这里更新了我的代码,请看一下
      • Array ([Uname] => maedi [Fname] => maedi [Lname] => SOLI [Mobno] => 0987654321 [Email] => eddysolhjoo44@gmail.com [Emp_id] => 22 [状态] => 活动 [子com] => 公司 [角色] => 经理 [经理] => MANI [创建] => )
      • 它基本上仍在为所有角色获取经理,并且经理下拉菜单未显示在视图中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      相关资源
      最近更新 更多