Я создал выпадающее меню множественного выбора, используя Bootstrap Multiselect на основе массива строк. Это выглядит так:
У меня есть массив с именем initCommodities
, который я использую при загрузке страницы. Я хотел бы, чтобы все значения в массиве проверялись в выпадающем списке. Вот код, который я использую для создания выпадающего меню:
$('#selectCommodities').html('');
for (var i = 0; i < totalCommodities.length; i++) {
if (totalCommodities[i].split(" ")[0].length == 1) {
$('#selectCommodities').append('<optgroup label="' + totalCommodities[i] + '"></optgroup>');
}
$('#selectCommodities').append('<option value="' + totalCommodities[i] + '-' + '">' + totalCommodities[i] + '</option>');
}
$('#selectCommodities').multiselect({
maxHeight: 300,
includeSelectAllOption: true,
enableFiltering: true,
enableClickableOptGroups: false,
dropUp: true,
numberDisplayed: 0,
onChange: function(element, checked) {
if (checked === true) {
selectedCommodities.push(element.val())
} else if (checked === false) {
selectedCommodities.splice($.inArray(element.val(), selectedCommodities), 1);
}
selectedCommodities.sort();
console.log(selectedCommodities);
}
});
$('#selectCommodities').multiselect("select", initCommodities);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
totalCommodities
- это массив из 81 строки, тогда как initCommodities
имеет только 10 значений, которые также появляются в totalCommodities
. Я искал решение для этого, и то, что я нашел, было последней строкой моего кода $('#selectCommodities').multiselect("select", initCommodities);
. К сожалению, это, похоже, ничего не делает.
Редактировать: я исправил это, удалив + '-'
из строки $('#selectCommodities').append('<option value="' + totalCommodities[i] + '-' + '">' + totalCommodities[i] + '</option>');
. Я не уверен, почему это исправило это, но это сделало.