35

В приведенном ниже коде, как получить значения поля multiselect в функции val() с использованием jQuery или чистого JavaScript?Получите значение поля multiselect с помощью jQuery или чистого JS

<script> 
    function val() { 
     //Get values of mutliselect drop down box 
    } 

    $(document).ready(function() { 
     var flag = 0; 
     $('#emp').change(function() { 
      var sub = $("OPTION:selected", this).val() 
      if (flag == 1) $('#new_row').remove(); 
      $('#topics').val(''); 
      var html = '<tr id="new_row" class="new_row"><td>Topics:</td><td> <select id="topic_l" name="topic_l" class="topic_l" multiple="multiple">'; 
      var idarr = new Array(); 
      var valarr = new Array(); { % 
       for top in dict.tops % 
      } 
      idarr.push('{{top.is}}'); 
      valarr.push('{{pic.ele}}'); { % endfor % 
      } 
      for (var i = 0; i < idarr.length; i++) { 
       if (sub == idarr[i]) { 
        html += '<option value="' + idarr[i] + '" >' + valarr[i] + '</option>'; 
       } 
      } 
      html += '</select></p></td></tr>'; 
      $('#tops').append(html); 
      flag = 1; 
     }); 
    }); 
</script> 
Emp:&nbsp;&nbsp;&nbsp;&nbsp; 
<select id="emp" name="emp"> 
    <option value=""></option> 
    <option value="1">1</option> 
</select> 

<div name="tops" id="tops"></div> 

<input type="submit" value="Create Template" id="create" onclick="javascript:var ret=val();return ret;"> 

Заранее благодарен!

ответ

90

Функция val, вызванная из select, вернет массив, если его несколько. $('select#my_multiselect').val() вернет массив значений для выбранных параметров - вам не нужно прокручивать и получать их самостоятельно.

+0

Всесоюзный блок динамически генерируется, так как вы можете видеть, поэтому, когда я говорю alert ($ ('select # my_multiselect'). Val()); он говорит undefined .... – Hulk

+0

Получил спасибо ......... – Hulk

+0

Просто для пояснения, который был примером селектора - вам нужно было бы выяснить, какой селектор использовать на основе вашего dom/разметки. – prodigitalson

22

Я думаю, что ответ может быть проще понять, как это:

$('#empid').on('change',function() { 
 
    alert($(this).val()); 
 
    console.log($(this).val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 
<select id="empid" name="empname" multiple="multiple"> 
 
    <option value="0">Potato</option> 
 
    <option value="1">Carrot</option> 
 
    <option value="2">Apple</option> 
 
    <option value="3">Raisins</option> 
 
    <option value="4">Peanut</option> 
 
</select> 
 
<br /> 
 
Hold CTRL/CMD for selecting multiple fields

Если вы выбираете «Морковь» и «Изюм» в списке, то вывод будет " 1,3" .

1

Согласно widget's page, оно должно быть:

var myDropDownListValues = $("#myDropDownList").multiselect("getChecked").map(function() 
{ 
    return this.value;  
}).get(); 

Это работает для меня :)

1

Это заставило меня значение и текст выбранных опций для jQuery multiselect.js плагина:

$("#selectBox").multiSelect({ 
    afterSelect: function(){ 
     var selections = []; 
     $("#selectBox option:selected").each(function(){ 
      var optionValue = $(this).val(); 
      var optionText = $(this).text(); 
      console.log("optionText",optionText);     
      // collect all values 
      selections.push(optionValue); 
     }); 

     // use array "selections" here.. 
    } 
}); 

очень полезно, если вам это необходимо для события «onChange»;)

8
var data=[]; 
var $el=$("#my-select"); 
$el.find('option:selected').each(function(){ 
    data.push({value:$(this).val(),text:$(this).text()}); 
}); 
console.log(data) 
+0

Не могли бы вы объяснить ваш код, пожалуйста? – ByteHamster

+0

Этот код получает выбранное значение и текст, затем нажмите на массив –

0

Вы тоже можете сделать это.

<form action="ResultsDulith.php" id="intermediate" name="inputMachine[]" multiple="multiple" method="post"> 
    <select id="selectDuration" name="selectDuration[]" multiple="multiple"> 
     <option value="1 WEEK" >Last 1 Week</option> 
     <option value="2 WEEK" >Last 2 Week </option> 
     <option value="3 WEEK" >Last 3 Week</option> 
     <option value="4 WEEK" >Last 4 Week</option> 
      <option value="5 WEEK" >Last 5 Week</option> 
      <option value="6 WEEK" >Last 6 Week</option> 
    </select> 
    <input type="submit"/> 
</form> 

Затем возьмите несколько вариантов из следующего кода PHP ниже. Он печатает выбранные несколько значений соответственно.

$shift=$_POST['selectDuration']; 

print_r($shift);