#jquery #jquery-select2
Вопрос:
Я создал select2
поле, которое изменяет input
значение поля на выбранные параметры.
Я правильно делаю покупки, когда выбираю его, но выбранные не разделены запятой нужна помощь, пожалуйста
$(function() {
// turn the element to select2 select style
$('.select2').select2({
placeholder: "Select a state",
maximumSelectionLength: 2,
tokenSeparators: [',', ' ', ';'],
allowClear: true,
}).on('change', function(e) {
var data = $(".select2 option:selected").text();
$("#test").val(data ',');
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.4/css/select2.min.css" rel="stylesheet" />
<script src="//code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.4/js/select2.min.js"></script>
<p>
<select class="select2" style="width:300px" multiple>
<option value="AL">Alabama</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WV">West Virginia</option>
</select>
</p>
<input type="text" id="test">
см. пример https://jsfiddle.net/eszv1c47/
Комментарии:
1. @freedomn-m, эти данные «,» предназначены для конца значения, а не для промежуточного, я пытался добавить .join (‘,’), но это не работает
2. Не беспокойтесь, вам нужно получить
.text()
выход в виде массива для использования.join(",")
— ответ приведен ниже
Ответ №1:
Для того, чтобы разделить значения запятыми (при .join(",")
этом вам нужно получить тексты опций в виде массива.
Один из вариантов-использовать jquery .map()
для перебора каждого выбранного параметра и возврата его текста в массив.
Без каких-либо других изменений ваш код
var data = $(".select2 option:selected").text();
$("#test").val(data ',');
должно быть
var data = $(".select2 option:selected").map((i,e) => $(e).text().trim()).toArray();
$("#test").val(data.join(','));
Обновлена скрипка (с исправленным выбором 2) https://jsfiddle.net/u7zevh3g/
$(function() {
// turn the element to select2 select style
$('.select2').select2({
placeholder: "Select a state",
maximumSelectionLength: 2,
tokenSeparators: [',', ' ', ';'],
allowClear: true,
}).on('change', function(e) {
var data = $(".select2 option:selected").map((i,e) => $(e).text()).toArray();
$("#test").val(data.join(','));
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.4/css/select2.min.css" rel="stylesheet" />
<script src="//code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.4/js/select2.min.js"></script>
<p>
<select class="select2" style="width:300px" multiple>
<option value="AL">Alabama</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WV">West Virginia</option>
</select>
</p>
<input type="text" id="test">