从未选中的复选框中获取价值
Posted
技术标签:
【中文标题】从未选中的复选框中获取价值【英文标题】:Get value from unchecked checkbox in play 【发布时间】:2013-03-21 23:54:17 【问题描述】:我需要使用 Play 框架获取未选中复选框的值。如果我选中复选框,我可以获得值。
我的html如下
<input type="checkbox" name="correctAnswer" value="true">
这就是我在控制器中获取数据的方式,它给了我一个只有选中框的数组
String[] segaMega = request().body().asFormUrlEncoded().get("correctAnswer");
我曾尝试在复选框技巧之前执行隐藏字段,但效果不佳。 play有什么可以帮助我的吗?
【问题讨论】:
这不是 Play Framework 的问题,而是 HTML 设计的问题。默认情况下,表单不会提交未选中复选框的值。如果您想传递 all 复选框中的值(即使是未选中的),您应该在请求中添加一个新参数,您可以使用隐藏字段来执行此操作(正如您已经尝试过的那样)或 使用 javascript/jQuery 从复选框中获取所有值并将它们作为新参数传递。这仍然是一个坏主意,您真正的功能需求是什么? 好的,这是您对需求的高级定义。看起来您需要在隐藏字段或其他任何地方处理复选框的值。 【参考方案1】:根据您的评论,您确实需要在服务器端同时拥有已检查的值和完整的值列表。最好的办法是在表单中有一个隐藏字段,它将保存由分隔符连接的复选框的值。在本例中,我将使用管道 (|
)。
<script type="text/javascript">
function beforeSubmitQuestion()
var hidden = document.getElementById("hidChxValues");
hidden.value = "";
var checkboxes = document.getElementsByName("correctAnswer");
for(var i = 0; i < checkboxes.length; i++)
hidden.value += checkboxes[i].value + "|";
return false;
;
</script>
<form id="yourForm" onsubmit="beforeSubmitQuestion(); ">
<input type="hidden" id="hidChxValues" />
<input type="checkbox" name="correctAnswer" value="true" /> Valid
<br />
<input type="checkbox" name="correctAnswer" value="false" /> Invalid
<br />
<input type="submit" />
</form>
我已经在 jsfiddle 中进行了测试:http://jsfiddle.net/tdDbg/ 除了我使用type="text"
而不是type="hidden"
以查看连接值并在onsubmit
的末尾添加return false;
到避免向服务器提交表单(这将返回错误)。
可以使用 Play 或其他技术(甚至是普通的 Servlet)来处理服务器端代码。
【讨论】:
以上是关于从未选中的复选框中获取价值的主要内容,如果未能解决你的问题,请参考以下文章