我正在使用bootstrap select进行多次启用的下拉列表。 当按下按钮时,我正在构建一个要在AJAX请求中使用的变量。
它适用于返回值(在本例中基本上是ID),因为它返回一个值数组,我可以使用循环来构建JSON。但是我还需要发送文本值,但还没有能够使这个工作。
$('#sendButton').click(function() {
var modal = $('#modalPopup');
var modalID = modal.data('value');
var selectedOptionValue = $('#multiSelectBox').val();
var selectedOptionName = $('#multiSelectBox').text();
var sendRequest = {
'modalNo': modalID,
'products': []
};
for (var i = 0; i < selectedOptionValue.length; i++) {
sendRequest.products.push({
'productId': selectedOptionValue[i],
'productName': selectedOptionName
});
}
});
我在构建请求时尝试了另一个循环来执行selectedOptionName[j]
但没有运气,我最终得到了我的下拉列表中的所有文本值。尝试使用:
var selectedOptionName = $('#multiSelectBox:selected').text();
但这不会返回任何东西。有什么想法吗?
用于下拉列表的HTML:
<select class="selectpicker" multiple id="multiSelectBox" title="Select Product(s)"></select>
填充下拉列表的代码:
var html = '';
for (var i = 0; i < data.products.length; i++){
html += '<option value ="' + data.products[i].productId+ '">' + data.products[i].productName+ '</option>'
}
$('#multiSelectBox').html(html);
$('.selectpicker').selectpicker('refresh');
答案 0 :(得分:3)
正确的语法是
$(“#multiSelectBox option:selected”)。text()
但这将为您提供所有选定文本的字符串。所以你需要在循环中按值找到文本。我没有在这里检查语法,可能有拼写错误。
for (var i = 0; i < selectedOptionValue.length; i++) {
var val = selectedOptionValue[i];
var txt = $("#multiSelectBox option[value='"+val+"']").text();
sendRequest.products.push({
'productId': val ,
'productName': txt
});
}
答案 1 :(得分:0)
选择ALL WITH FILTER
<h1 class="monthofyear">monthofyear: <span></span></h1>
$(document).ready(function() { $('#monthofyear').multiselect({ includeSelectAllOption: true,
onSelectAll: function(element, checked) {
var selected = [];
$('#monthofyear option:selected').each(function(index, brand) {
selected.push([$(this).val()]);
});
$("h1.monthofyear span").text(selected);
},
enableCaseInsensitiveFiltering: true,
enableFiltering: true,
maxHeight: '300',
buttonWidth: '235',
onChange: function(element, checked) {
var brands = $('#monthofyear option:selected');
var selected = [];
$(brands).each(function(index, brand) {
selected.push([$(this).val()]);
});
$("h1.monthofyear span").text(selected);
}
});});