我动态地生成一行复选框,但我想在一行中只显示4个复选框,然后在下一行显示。我试过这段代码,但我无法达到目标。请帮帮我
<c:forEach var="group" items="${actionBean.roles}" varStatus="loop">
<table>
<tr>
<td><s:checkbox name="category1" id="category${loop.index}" class="category"
onclick="OnChangeCheckbox(this,id)" checked="false"></s:checkbox> <b> <s:label for="${group}" />
</b></td>
</tr>
<tr>
<c:forEach var="item" items="${actionBean.activityroles}">
<c:if test="${not empty actionBean.activityroles && item.label == group }">
<td width="25%"><s:checkbox name="category11" value="${item.id}" class="category${loop.index}"></s:checkbox> <s:label
for="${item.name}" title="${item.description}" /></td>
</c:if>
</c:forEach>
</tr>
</table>
</c:forEach>
在这段代码中,我在下一行有一个复选框作为标题及其子复选框。所有都是动态生成的。
<script>
function OnChangeCheckbox(checkbox, checkid) {
if (checkbox.checked) {
$('.' + checkid).attr('checked', true);
} else {
$('.' + checkid).attr('checked', false);
}
}
</script>
答案 0 :(得分:1)
您可以使用变量来检查它是否是第4项并且中断了。我没有测试下面的代码(它可能有一些语法错误)但它应该是那个,希望它会有所帮助:
<c:forEach var="group" items="${actionBean.roles}" varStatus="loop">
<table>
<tr>
<td colspan="4"><s:checkbox name="category1" id="category${loop.index}" class="category"
onclick="OnChangeCheckbox(this,id)" checked="false"></s:checkbox> <b> <s:label for="${group}" />
</b>
</td>
</tr>
<c:set var="index" value="0"/>
<c:forEach var="item" items="${actionBean.activityroles}" varStatus="s">
<c:if test="${index % 4 eq 0}">
<tr>
</c:if>
<c:if test="${not empty actionBean.activityroles && item.label == group }">
<td width="25%">
<s:checkbox name="category11" value="${item.id}" class="category${loop.index}"></s:checkbox>
<s:label for="${item.name}" title="${item.description}" />
</td>
<c:set var="index">${index + 1}</c:set>
<c:if test="${s.last && index % 4 neq 0}">
<td colspan="${4 - (index % 4)}"> </td>
</c:if>
</c:if>
<c:if test="${index % 4 eq 3 || s.last}">
</tr>
</c:if>
</c:forEach>
</table>
</c:forEach>