第一次单击selectpicker的最后选择的选项将不起作用

时间:2019-07-24 11:04:12

标签: jquery html css bootstrap-selectpicker

好吧,自几天前以来,我一直遇到这个问题,我无法真正找到解决方案。 问题是,每当我要首先单击selectpicker select的最后选择的选项时,都不会发生任何事情。 它仅在我第二次选择/单击时发生,前提是我已经进入内部菜单并选择了上一个选项。 而且,当我第一次单击最后一个选项时,jquery会自行显示背景,而没有任何反应。在这种情况下,应将其删除,然后转到其余选项位于的索引处,显示用户选择的选项。

我尝试选择选择选项中的最后一项,以尝试在每次单击时传递onchange事件,但不幸的是,我未能这样做。 我也一直在检查CSS规则,无论如何,都有一些东西用其填充,边距或z-index阻止了该选项,但这不是什么。

<!--TEMPLATE FOR THE SELECT LIST--> 
<section class="top_margin_xs">
   <a class="block" data-toggle="modal" 
        href="#modal_search_treat">                            
       <li class="list-group-item item text-left">
        <figure> <i class="td-icon-stethoscope-alt 
        placeholder_input_ico text-muted_light ico-specialty 
        color_a" style="font-size: 3.5rem; top: 10px;"></i>
        </figure>
        <div class="left_margin_md left_padding" 
               style='display:inline-block; vertical-align: middle;'>
         <input id="inputTreatment" type="hidden" class="form- 
           control" placeholder="" value="" name="treatment" 
           style="text-indent:30px" />
           <span><?= __('Tratamiento'); ?></span>  
       </div>
       </li>
   </a>
    <div id="modal_search_treat" class="modal fade bg_dark">
       <div class="modal-dialog">
          <button type="button" class="close pull-left left_margin top_margin" data-dismiss="modal">
          <span class="text_light">
            <i class='fa fa-2x fa-angle-left'></i>
          </span>
           </button>
           <div class="modal-content">
           <div class="modal-body no_padding">
              <div id="treatments">
                <i id="stethoscope" class="td-icon-stethoscope-alt 
 ico-specialty color_a ico_placeholder fa-3x top_padding_xs"></i>
           <select id="treament" class="selectpicker form-control color_a selespecialidad" data-style="color_a bg_paper"
data-id="treatment" 
data-live-search="true" 
data-toggle="tooltip">
      <?php  echo "<optgroup label='Tratamiento:'>";
          foreach ($treatments AS $k => $s) {
            echo "<option class='color_a' value='$k' selected>$s</option>";
          }
         echo "</optgroup>"; ?>
            </select>
         </div>
       </div>
      </div>
     </div>
    </div>
   </section>

 <!--SCRIPT FOR SELECTED OPTIONS-->   
   $('.selectpicker[data-id="treatment"]').on('change', function() {
    especialidad = this.value;
    var valTreat = $(this)[0].selectedOptions[0].innerHTML;
    var inputTreat = $("input[type=hidden][name=treatment]");
    inputTreat.val(valTreat);
    inputTreat.next('span').text(valTreat);
    var lengthInput = valTreat.length;
    if (lengthInput > 18) {
        var treatText = inputTreat.next('span').text();
        var textElipsisTreat = treatText.substring(0, 18) + '...';
        inputTreat.next('span').text(textElipsisTreat);
    }

    $('#modal_search_treat').modal('toggle');
    $('div.modal-backdrop.in').removeClass('modal-backdrop');

    if ($('.selectpicker[data-id="treatment"]').val(valTreat)) {
        return;
    }
});

我期望的是,每当您进入菜单并首先单击最后一个选择的选项时,它将直接出现在我将值传递到的输入上,因此会出现在我正在显示所选值的第一个列表中

1 个答案:

答案 0 :(得分:0)

最后,在我进行了一些研究之后,这相当容易。 在foreach循环中,我必须删除标签上的选定选项, 实际上是选择了最后一个选项,因此它阻止了被选中的选项出现在我的初始菜单上。

fgxxxx-redis-*