jQuery获取多个select的所有值,而不仅仅是选中

时间:2013-04-11 09:06:24

标签: jquery html ajax

我正在尝试通过Ajax提交一个完整的多重选择($('#tags_selected'))

$.ajax({
  url: base_url + 'companies/editTagsAsync',
  type: 'post',
  dataType: 'json',
  data: $('#tags_selected').val(),
  success: function (json) {
    console.log(json);
  }
});

但它只发送所选的值。我想传递选择框中的所有值。这可能是一个简单的解决方案,但我只是不知道......

3 个答案:

答案 0 :(得分:4)

您可以将所有选择值推送到数组中,然后通过data发送:

var selectArr = []; 

$('#tags_selected option').each(function() {
    selectArr.push($(this).val());
});

$.ajax({
  url: base_url + 'companies/editTagsAsync',
  type: 'post',
  dataType: 'json',
  data: selectArr,
  success: function (json) {
    console.log(json);
  }
});

答案 1 :(得分:0)

您需要找到下拉列表的<option>后代并获取其值:

data: { 
  values: $('#tags_selected').find("option").map(function() {return this.value;})
}

这样在服务器端,您将获得一个名为“values”的数组,其中包含所有值。我使用.find()代替.children()来预测包含<optgroup>元素的下拉列表。

答案 2 :(得分:0)

You need to send both selected and all values array.

var data: { 
        allValues: $('#tags_selected').find("option").map(function() {return this.value;}),
        selectedValues :$('#tags_selected').val()
    }
var data={ }
$.ajax({
  url: base_url + 'companies/editTagsAsync',
  type: 'post',
  dataType: 'json',
  data: data,
  success: function (json) {
    console.log(json);
  }
});