选中复选框时如何获取多个值

时间:2014-02-10 07:56:24

标签: javascript struts2

我正在尝试在列表中包含复选框。使用该代码我已成功包含复选框。但是我无法通过使用它来获取多个值。如果我检查了三个checbox,我只能获得一个值名单。请帮助我找出我无法同时获得多个值的原因。

 <div class="profile-input"  style="height:100px; width:200px; overflow:auto;">

                 <s:iterator value="cityList">
                    <input type="checkbox" name="cityNumber[]" id="cityNo"  value="<s:property value="cityId"/>" onchange="getcountrycode(false);" multiple="multiple"/><s:property value="cityName"/><br/>
                    </s:iterator>

                    </div>

2 个答案:

答案 0 :(得分:1)

首先,如果你有一个集合在等待Action,你需要使用IteratorStatus指向每个元素的索引;
还在标签中包含城市名称,生成univoque ID,并删除对复选框没有任何意义的multiple="multiple"

<s:iterator value="cityList" stat="ctr">
    <input type = "checkbox" 
           name = "cityNumber[<s:property value="%{#ctr.index}"/>]" 
          value = "<s:property value="cityId"/>" 
             id = "cityNo<s:property value="%{#ctr.index}"/>"
    />

    <label for = "cityNo<s:property value="%{#ctr.index}"/>">
       <s:property value="cityName"/>
    </label>

    <br/>
</s:iterator>

然后,最好使用Struts UI标记<s:checkbox />

<s:iterator value="cityList" stat="ctr">
    <s:checkbox name = "cityNumber[%{#ctr.index}]" 
          fieldValue = "cityId" 
               label = "cityName"
    />
    <br/>
</s:iterator>

甚至可以使用<s:checkboxlist/> like explained here删除迭代器。

答案 1 :(得分:0)

使用jQuery map / get functions:

$('#save_value').click(function () {
    var sel = $('input[type=checkbox]:checked').map(function (_, el) {
        return $(el).val();
    }).get();

    alert(sel);
});

在此处查看演示.. http://jsfiddle.net/J3LNt/2/