2015-10-22 2 views
3

Я пытаюсь использовать multiselect bootstrap, чтобы установить видимость некоторых столбцов в таблице через функцию jQuery toggle(). Для каждого столбца, выбранного в раскрывающемся списке, я хочу либо показать, либо скрыть его в зависимости от выбранного вами или нет. Но я явно не понимаю, как использовать событие onChange, чтобы сделать эту работу. Кто-нибудь, пожалуйста, покажет мне правильный синтаксис.Использование onChange в бутстраге multiselect

Мои Javascript и HTML выглядит следующим образом:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#showops').multiselect({ 
      maxHeight: 300, 
      buttonWidth: '150px', 
      includeSelectAllOption: true, 
      allSelectedText: 'Showing All', 
      onChange: function(element, checked) { 
       if(checked == true){ 
        if (element == '1') { $(".toggleG").toggle(); } 
        else if (element == '2') { $(".toggleE").toggle(); } 
       } 
      } 
     }); 
    }); 
</script> 

<select id="showops" multiple="multiple"> 
    <option value="1"> Show Grid </option> 
    <option value="2"> Show eMail </option> 
    <option value="3"> Show Lat/Lon </option> 
    <option value="4"> Show Last Name </option> 
    <option value="5"> Show TOD </option> 
</select> 
+0

Является ли "OnChange" событие, инициирующее или нет? –

+0

Просьба более подробно описать, что вы видите, когда пытаетесь это сделать. Возможно, чтобы продемонстрировать jsfiddle. –

+0

Насколько я могу судить, событие OnChange не запускается вообще. Я помещаю в него предупреждение, и ничего не происходит. –

ответ

4

Это исправлено.

onChange: function(option, checked, select) { 
      var opselected = $(option).val(); 
      if(checked == true) { 

        if (opselected == '1') { $(".toggleG").toggle(); } 
        if (opselected == '2') { $(".toggleE").toggle(); } 
        if (opselected == '3') { $(".toggleLAT").toggle(); $(".toggleLON").toggle();} 
        if (opselected == '4') { $(".toggleLN").toggle(); } 
        if (opselected == '5') { $(".toggleTOD").toggle(); } 
      } else if(checked == false) 
        if (opselected == '1') { $(".toggleG").toggle(); } 
        if (opselected == '2') { $(".toggleE").toggle(); } 
        if (opselected == '3') { $(".toggleLAT").toggle(); $(".toggleLON").toggle();} 
        if (opselected == '4') { $(".toggleLN").toggle(); } 
        if (opselected == '5') { $(".toggleTOD").toggle(); }   
      } 
     } 
+0

Это исправить. Спасибо. –

2

Я изменил onChange следующим образом. Теперь он срабатывает, но он работает только для первого выбора, а не для каждого выбора.

onChange: function(option, checked, select) { 
    var opselected = $(option).val(); 
    if(checked == true) { 
     if (opselected == '1') { $(".toggleG").toggle(); } 
     if (opselected == '2') { $(".toggleE").toggle(); } 
     if (opselected == '3') { 
      $(".toggleLAT").toggle(); 
      $(".toggleLON").toggle(); 
     } 
     if (opselected == '4') { $(".toggleLN").toggle(); } 
     if (opselected == '5') { $(".toggleTOD").toggle(); } 
    } else if(checked == false) 
     if (opselected == '1') { $(".toggleG").toggle(); } 
     if (opselected == '2') { $(".toggleE").toggle(); } 
     if (opselected == '3') { 
      $(".toggleLAT").toggle(); 
      $(".toggleLON").toggle(); 
     } 
     if (opselected == '4') { $(".toggleLN").toggle(); } 
     if (opselected == '5') { $(".toggleTOD").toggle(); } 
    } 
} 
-1
<script type="text/javascript"> 
    $(function() { 
     $("#showops").change(function() { 
     var selectedText = $(this).find("option:selected").text(); 
     var selectedValue = $(this).val(); 
     alert("Selected Text: " + selectedText + " Value: " + selectedValue); 
    }); 
}); 
</script> 
+0

OP задает вопрос о загрузке мультиселектора – Strnm

Смежные вопросы