我正在尝试在列表中包含复选框。使用该代码我已成功包含复选框。但是我无法通过使用它来获取多个值。如果我检查了三个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>
答案 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/