Box 在 portlet.xml 中,我已将 box1 值默认设置为“on”。因-6ren">
gpt4 book ai didi

java - 处理选中和未选中的复选框

转载 作者:行者123 更新时间:2023-12-01 15:14:35 25 4
gpt4 key购买 nike

我这里的情况非常困惑。

<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 页面时,我会看到该值已选中。现在,我想处理我感到困惑的未选中复选框的情况。当我取消选中该框时,提交的值为空,我对处理这种情况感到困惑。如果未选中该复选框,如何提交默认值。

最佳答案

虽然这个问题是 3 年前提出的,但我还是为 future 的观众添加了一个答案。

如果未选中复选框,则不会发送该复选框。所以devang如果没有检查,将其值设置为“开/关”的答案不会有帮助 - 它总是返回 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 参数)。但是,如果选中该复选框,事情就会变得很麻烦,因为现在浏览器会看到与同一 name 字段对应的两个值。

例如,Java 仅提供具有特定名称的字段的第一个值。另一方面,PHP 将最后一个值作为要使用的值。

因此,您需要执行一个额外步骤并调用 JavaScript。这个想法是根据检查的条件禁用隐藏输入。

if(document.getElementById("box1").checked) {
document.getElementById('box1_hidden').disabled = true;
}

这构成了完整的解决方案,与服务器处理无关。

关于java - 处理选中和未选中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11810196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com