从未选中的复选框中获取价值

时间:2013-03-31 20:57:16

标签: java html forms checkbox playframework

我需要使用Play框架获取未选中复选框的值。如果我选中复选框,我可以获得该值。

我的HTML如下

   <input type="checkbox" name="correctAnswer" value="true">

这就是我在控制器中获取数据的方式,它为我提供了一系列仅选中的复选框

  String[] segaMega = request().body().asFormUrlEncoded().get("correctAnswer");

我已经尝试在复选框技巧之前做隐藏字段,但这并没有很好地工作。游戏有什么可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

根据您的评论,您确实需要在服务器端同时拥有选中的值和完整的值列表。最好的选择是在表单中有一个隐藏字段,它将保存由分隔符连接的复选框的值。在这个例子中,我将使用管道(|)。

<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"来查看连接值并添加了return false;onsubmit的末尾,以避免表单提交到服务器(将返回错误)。

服务器端代码可以使用Play或其他技术处理,甚至是普通的Servlet。