2

たとえば、最初のページに移動して3行を選択するよりも、2 ページ目から2行を選択 (チェック) しました。最初のページにとどまっているときに、選択した5行から情報を取得したい。

$('tr.row_selected') - 動作していません

ありがとう。

更新。

次のようなハンドラを作成しました。

$('#example').find('tr td.sel-checkbox').live("click", function () { /*code here*/ });

しかし、現在、クリックイベントがハドルの場合、テーブルの行は非表示になっています。DataTables のソートまたはグループ化操作である可能性があると思います。これで何をしなければならないか考えていますか?

4

2 に答える 2

3

チェックボックスが選択されたら、必要な行情報をキーと値のペアとしてグローバルオブジェクトに保存します

以前のやり方は特に覚えていませんが、構文は次のようになりました。

$('input[type=checkbox]').click(function()
{
    var row = $(this).parent(); //this or something like it, you want the TR element, it's just a matter of how far up you need to go
    var columns = row.children(); //these are the td elements

    var id = columns[0].val(); //since these are TDs, you may need to go down another element to get to the actual value

    if (!this.checked) //becomes checked (not sure may be the other way around, don't remember when this event will get fired)
    {
        var val1 = columns[1].val();
        var val2 = columns[2].val();

        myCheckValues[id] =[val1,val2]; //Add the data to your global object which should be declared on document ready
    }
    else delete myCheckValues[id];
});

送信するときに、オブジェクトから選択した行を取得します。

for (var i = 0; i < myCheckValues.length; i++)
...

申し訳ありませんが、JSを長い間行っていないため、そのままのコードでは機能しない可能性がありますが、アイデアは得られます。

于 2013-01-14T16:43:05.483 に答える
3
$('#example').find('tr td.sel-checkbox').live("click", function () {
            var data = oTable.fnGetData(this);
            // get key and data value from data object
            var isSelected = $(this).hasClass('row_selected');
            if(isSelected) {
                myCheckValues[key] = value;
                checkedCount++;
            } else {
                delete myCheckValues[key];
                checkedCount--;
            }
        });

.....送信時

if(checkedCount > 0) {
            for(var ArrVal in myCheckValues) {
                var values = myCheckValues[ArrVal];   // manipulate with checked rows values data        
            }
        }
于 2013-01-16T17:45:24.797 に答える