您必须返回值而不是文本内容,使用val() 方法或使用value 属性来获取值。
var dataselected = $.map($(".select2 option:selected"),function (el, i){
return $(el).val();
});
$(function() {
$('.select2').select2({
theme: "classic",
}).on('change', function(e) {
var dataselected = $.map($(".select2 option:selected"), function(el, i) {
return $(el).val();
});
console.log(dataselected);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<select class="form-control select2" multiple="multiple">
<option value="donut" id="first">donut-milk</option>
<option value="orange" id="first">orange-milk</option>
</select>
或
var dataselected = $.map($(".select2 option:selected"),function (el, i){
return el.value;
});
$(function() {
$('.select2').select2({
theme: "classic",
}).on('change', function(e) {
var dataselected = $.map($(".select2 option:selected"), function(el, i) {
return el.value;
});
console.log(dataselected);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<select class="form-control select2" multiple="multiple">
<option value="donut" id="first">donut-milk</option>
<option value="orange" id="first">orange-milk</option>
</select>
或者直接从select标签中获取值。
var dataselected = $(".select2").val()
根据jQuery docs of val() method:
当集合中的第一个元素是 select-multiple 时(即,具有 multiple 属性集的 select 元素),.val() 返回一个包含每个选定选项值的数组。
仅供参考: id 在上下文中应该是唯一的,因此请避免使用重复的 id。对于分组使用class 属性。
更新:如果您想从文本内容中提取第一部分(- 之前),那么您可以使用 String#split 方法执行类似的操作。
var dataselected = $.map($(".select2 option:selected"), function(el, i) {
return $(el).text().split('-')[0];
// or
// return $(el).text().split('-').shift();
});
$(function() {
$('.select2').select2({
theme: "classic",
}).on('change', function(e) {
var dataselected = $.map($(".select2 option:selected"), function(el, i) {
return $(el).text().split('-')[0];
// or
// return $(el).text().split('-').shift();
});
console.log(dataselected);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<select class="form-control select2" multiple="multiple">
<option value="donut" id="first">donut-milk</option>
<option value="orange" id="first">orange-milk</option>
</select>