1

我正在将引导选择用于多个启用的下拉菜单。当按下按钮时,我正在构建一个要在 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');
4

2 回答 2

4

正确的语法是

$("#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 
        });
    }
于 2014-09-22T13:32:24.070 回答
0

用过滤器全选

<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);

  }
});});
于 2016-08-29T12:56:26.540 回答