[英]Handle checked and unchecked checkbox
我这里的情况非常混乱。
<tr>
<td>
<input type="checkbox" id="box1" name="box1" <% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %> checked="checked" <% } %> >
</td>
<td><label>Box</label></td>
</tr>
在portlet.xml中,我默认将box1值设置为“ on”。 因此,当我加载edit.jsp页面时,我看到了选中的值。 现在,我想处理令我感到困惑的未选中复选框的情况。 当我取消选中该复选框时,提交的值为null,我很困惑以应对这种情况。 如果未选中此复选框,则如何提交默认值。
尽管这个问题是3年前提出的,但我为将来的观众添加了一个答案。
如果未选中此复选框,则不会发送该复选框。 因此devang将其值设置为“ on / off”(如果未选中)的答案无济于事-它始终返回NULL。
我发现最简单的解决方案是添加一个隐藏字段,该字段的名称与未选中复选框时将使用的名称相同。
例如,在您的代码中,一个解决方案可能是
<tr>
<td>
<input type="checkbox" id="box1" name="box1" value="1" <% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %> checked="checked" <% } %> >
</td>
<td>
<input type="checkbox" id="box1_hidden" name="box1" value="0" >
</td>
</tr>
上面的代码取决于服务器对参数的处理,因为浏览器将发送这两个参数。 如果未选中此复选框,则隐藏字段的值将按原样使用(因为浏览器不会发送null参数)。 但是,如果选中此复选框,则事情变得很麻烦,因为现在浏览器会看到两个对应于相同名称字段的值。
例如,Java仅提供具有特定名称的字段的第一个值。 另一方面,PHP将最后一个值用作要使用的值。
因此,您需要执行一个额外的步骤并调用JavaScript。 这个想法是基于检查的条件禁用隐藏的输入。
if(document.getElementById("box1").checked) {
document.getElementById('box1_hidden').disabled = true;
}
无论服务器如何处理,这都构成了完整的解决方案。
据我记得,添加value属性并将其设置为所需的值应该可以工作。 在下面,添加value="on"
。
<input type="checkbox" id="box1" name="box1" value="on"
<% if (renderRequest.getPreferences().getValue("box1", null).equals("on")) { %>
checked="checked"
<% } %> >
使用剃刀语法:
<input type="checkbox" name="xxx" value="xxx" @if(condition == true) {<text>checked="checked"</Text>}>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.