javascript - 如果选项值已存在,则禁用选择选项

标签 javascript jquery ajax codeigniter

我正在创建一个图书馆成员(member)表单,在此表单中,学生列表通过选择选项中的 ajax 请求填充。现在我需要禁用已经是图书馆成员(member)的学生选项。

表单 View

<div class="form-group">
  <div class="input-group">
    <span class="input-group-addon"><i class="fa fa-asterisk" aria-hidden="true"></i> <i class="fa fa-calendar" aria-hidden="true"></i>  <?php echo get_phrase('_batch'); ?></span>
    <select id="batch_result_holder" name="batch_result_holder" onchange="return get_batchs_students(this.value)" data-plugin="select2" required>
      <option disabled selected value=""> <?php echo get_phrase('select_programs_first'); ?></option>
    </select>
  </div>
</div><!-- form-group -->

<div class="form-group">
  <div class="input-group">
    <span class="input-group-addon"><i class="fa fa-asterisk" aria-hidden="true"></i> <i class="fa fa-user" aria-hidden="true"></i>  <?php echo get_phrase('_student'); ?></span>
    <select id="student_result_holder" name="student_result_holder"  data-plugin="select2" >
      <option disabled selected> <?php echo get_phrase('select_batch_first'); ?></option>
    </select>
  </div>
</div><!-- form-group -->

提取学生信息的 AJAX 代码

function get_batchs_students(batch_result_holder){
  var program_id = $('#program_id').val();
  $.ajax({
    type:"POST",
    url: '<?php echo base_url();?>index.php?admin/get_batch_students_without_assigned/',
    data:{batch_result_holder: batch_result_holder, program_id:program_id},

    success: function(response)
    {
      jQuery('#student_result_holder').html(response);
    }
  });
}

拉动学生列表的 Controller

function get_batch_students_without_assigned($program_id, $batch_id, $status){
  $program_id = $this->input->post('program_id');
  $batch_id = $this->input->post('batch_result_holder');
  $students = $this->crud_model->get_student_list_without_section($program_id, $batch_id, 1);
  $assigned_student = $this->crud_model->get_assigned_students();
  echo '<option value="" selected disabled> select from list below </option>';
  foreach($assigned_student as $row2):
    foreach($students as $row){

      echo '<option value="' . $row['student_id'] . '"';
      if($row['student_id'] == $row2['type_id']):
        echo 'disabled';
      endif;
      echo '>';
      echo $row['name'];
      echo '</option>';
    }
  endforeach;
}

但是上述 Controller 将循环遍历所有学生和分配的学生,并以禁用和非禁用格式输出相同的学生选项。那么,我如何防止该 Controller 显示所有学生都是已经是成员(member)的残疾学生。

output of the above controller

最佳答案

可以将分配的学生id收集到一个数组中,并检查循环中的student_id是否在数组中:

  $assigned = array();
  foreach($assigned_student as $row2) {
    $assigned[] = $row2['student_id'];
  }
  foreach($students as $row){}
      echo '<option value="' . $row['student_id'] . '"';
      if(in_array($row['student_id'], $assigned):
        echo 'disabled';
      endif;
      echo '>';
      echo $row['name'];
      echo '</option>';
  endforeach;

关于javascript - 如果选项值已存在,则禁用选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34972599/

相关文章:

javascript - 使用 symfony 从 ajax 获取数据

javascript - 在同一页面登录,检查SESSION,无需重新加载

javascript - window.location.replace 不适用于某些网址

jquery - 显示 'loading' 直到所有图像均已加载且 jquery Masonry 触发

javascript - 如何在 jQuery Datepicker 中添加一个类

jquery - ajax表单发送通知jquery

javascript - 如何使用react-router-dom <Link> 防止事件冒泡?

javascript - 比较两个字符串并显示字符串中不匹配单词的数量

javascript - jQuery 和纯 Javascript 验证的区别

jquery - 使用 jQuery 交换图像