2

a 我有一个很大的表单,里面有很多复选框和一个多选列表。

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

<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 />

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

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

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

THK

4

2 回答 2

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(', ');
于 2012-08-01T16:01:07.153 回答
0

自从我偶然发现了这个问题..即使它已经发布了很长时间,其他人也可能会发现它也很有帮助。

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

$(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);
        });
    });
});
于 2015-03-10T01:33:22.797 回答