将最新的select2与多个选项一起使用。当用户选择任何选项时,我需要将所选选项值和文本组成数组。为了获得价值,我使用:

var id=$('#select2_dropdown').val();


它使得像id[]="value1", id[]="value2"这样的数组。

现在,我需要为<option>标记之间的文本创建相同的数组。在Get selected text from a drop-down list (select box) using jQuery找到了一个解决方案,因此添加了以下代码:

var name=$("#select2_dropdown option:selected").text();


虽然它对单选非常有用,但尝试将其与多选结合使用只会产生像name=optiontext1optiontext2这样的字符串(所有选定选项的字符串合并为一个)

如何使它看起来像这样:name[value1]=optiontext1, name[value2]=optiontext2

尝试了一下,没有任何运气:

var id=$("#select2_dropdown option:selected").text();
var name[id]=$("#select2_dropdown option:selected").text();

最佳答案

您可以在select2上执行jQuery.each。

$("#select2_dropdown option:selected").each(function(){

  var option = $(this);

  var label = option.text();
  var value = option.value();

});


您可以将这些值压入一个对象,然后根据需要格式化数据。



$('.select2').select2({ placeholder: 'Please choose one.'});

$('#stringify').on('click',function(){

  var result = { };
	$('#feeling :selected').each(function() { var o = $(this); result[o.text()]=o.val() });

  $('#output').text(JSON.stringify(result));

});

.select2 {
  min-width:200px;
}

.output {
  margin-top: 25px;
}

<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.js"></script>


<label for='feeling'>How are you feeling?</label>
<select multiple='multiple' id='feeling' class='select2'>
  <option value="1">Awake</option>
  <option value="2">Tired</option>
  <option value="3">Happy</option>
  <option value="4">Sad</option>
  <option value="5">Hungry</option>
  <option value="6">Tearful</option>
</select>

<button class='btn btn-primary' id="stringify">
  To JSON.
</button>

<div class='output well'>
  <span id='output'>
  </span>
</div>





该示例显示了如何对对象执行此操作,然后将其转换为JSON字符串。

07-24 18:42
查看更多