Вы должны вернуть значение вместо текстового содержимого, использовать метод 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 ofval()
method :
Когда первый элемент в коллекции является множественным выбором (т. Е. Элементом select с установленным атрибутом множественного числа), .val () возвращает массив, содержащийзначение каждого выбранного параметра.
К вашему сведению: 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>