有没有办法捕获多个复选框并选择框项目?

时间:2012-08-01 15:21:45

标签: html forms jsp loops

a我有一个非常大的表格,有很多ckeckbox和一个选择多个列表。

所有这些选项都是这样的:

<input type="checkbox" name="chk1" id="chk1" />chk1<br />
<input type="checkbox" name="chk2" id="chk2" />chk2<br />
<input type="checkbox" name="chk3" id="chk3" />chk3<br />
<input type="checkbox" name="chk4" id="chk4" />chk4<br />
<input type="checkbox" name="chk1_group2" id="chk1_group2" />A<br />
<input type="checkbox" name="chk2_group2" id="chk2_group2" />B<br />
<input type="checkbox" name="chk3_group2" id="chk3_group2" />C<br />
<input type="checkbox" name="chk4_group2" id="chk4_group2" />D<br />

我的想法是取值并将它们保存在一个sigle值中,如下所示:

String chk = "chk1, chk2, chk3";
String chk_group2 = "A,B,D";

我正在寻找一个可以从请求中获取所有vaule并将值放在sigle字符串中的循环。我尝试了列表,但它不起作用。 我正在使用JSP和Oracle 10g DB

THK

2 个答案:

答案 0 :(得分:1)

我首先给每个复选框一个“组”属性(或同等区别的东西),以指定它应代表的组,如下所示:

...
<input type="checkbox" group="group1" name="chk4" id="chk4" />chk4<br />
<input type="checkbox" group="group2" name="chk1_group2" id="chk1_group2" />A<br />
...

然后用这样的东西解析它们:

var group1 = [];
var group2 = [];

function parseSelected(){
    // maybe a more specific query for this 
    var checkboxes = document.getElementsByTagName("input");
    for (var i=0; i<checkboxes.length; i++) {
        var checkbox=checkboxes[i];
            // if its not checked, continue... 
        if(!checkbox.checked) continue;
        if(checkbox.getAttribute("group")=="group1"){
            group1.push(checkbox.getAttribute("name"));
        } else if(checkbox.getAttribute("group")=="group2"){
            group2.push(checkbox.getAttribute("name"));
        }
    }
}

并在某个地方某个地方(可能提交表格?)

parseSelected();
var strGroup1 = group1.join(', ');
var strGroup2 = group2.join(', ');

答案 1 :(得分:0)

因为我偶然发现了这个问题..尽管已经发布了很长时间,但其他人也可能觉得它很有帮助。

您可以使用jquery.each轻松访问复选框; e.g:

$(document).ready(function () {
    $('th input[type=checkbox]').each(function() {
        $(this).click(function (e) {
            var table = $(e.target).closest('table');
            $('td input:checkbox', table).prop('checked', this.checked);
        });
    });
});