2

たくさんの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 />

私の考えは、すべての値を取得して、次のように1つの単一の値に保存することです。

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

リクエストからすべての値を取得し、値を単一の文字列に入れることができるループを探しています。リストを試しましたが、機能しません。JSPとOracle10gDBを使用しています

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 に答える