0

我正在从 select 元素中获取所有值,selected使用这段 jquery 代码将没有属性。

$('#purchaseEditUpdateItemBtn').on('click', function(){
    var selected = [];
    $('#box2View option').each(function(index, element){ 
        selected[index] = $(element).val(); 
    });
    return false;
});

这是我的选择框。

 <select id="box2View" multiple="multiple" class="multiple">
     <option value="1">ITEM001</option>
     <option value="2">ITEM002</option>
     <option value="3">ITEM003</option>
     <option value="4">ITEM004</option>
 </select>

这将创建一个名为selected并将值保存为数组的 javascript 数组。我想从选项中获取所有值并模拟这样的查询。

estimate_id[]=1&estimate_id[]=2&estimate_id[]=3&estimate_id[]=4

以便服务器端将其作为数组接收。

PS:请注意,我想从选择元素中获取所有元素,而无需用户选择任何元素,因此,未使用 selected 属性。我尝试使用serialize()which 不起作用,因为serialize()需要选择元素,这在我的情况下是不正确的。

谢谢你

4

2 回答 2

2

你可以尝试这样的事情:

$('#purchaseEditUpdateItemBtn').click(function(){
    var selected = [];
    $('#box2View option').each(function(index, element){ 
        selected[index] = 'estimate_id[]=' + $(element).val(); 
    });
    alert(selected.join('&')); 
    return false;
});​

不确定这是否是最优雅的方式。Array.join它通过函数使用简单的字符串连接。

于 2012-07-23T09:46:56.727 回答
0

对于上述问题,我已经完成了完整的 bin。所以,请在http://codebins.com/bin/4ldqp9x上查看演示

HTML:

<select id="box2View" name="box2View" multiple="multiple" class="multiple">
  <option value="1">
    ITEM001
  </option>
  <option value="2">
    ITEM002
  </option>
  <option value="3">
    ITEM003
  </option>
  <option value="4">
    ITEM004
  </option>
  <option value="5">
    ITEM005
  </option>
  <option value="6">
    ITEM006
  </option>
  <option value="7">
    ITEM007
  </option>
</select>
<p>
  <input type="button" id="purchaseEditUpdateItemBtn" name="purchaseEditUpdateItemBtn" value="Show Items" />
</p>

查询:

$(function() {
    $('#purchaseEditUpdateItemBtn').on('click', function() {
        var selected = new Array();
        var i = 0;
        $('#box2View option').each(function(index, element) {
            if ($(this).is(":selected")) {
                selected[i] = "box2View[]=" + $(element).val();
                i++;
            }
        });
        if (selected.length > 0) {
            alert(selected.join('&'));
        }
        return false;
    });
});
于 2012-07-23T12:37:36.307 回答