最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Jquery get values of all checked rows in table gridview - Stack Overflow

programmeradmin5浏览0评论

I have a table like below

<table id="mytable">
<tr><th>checked</th><th>id</th><th>text</th></tr>
<tr><td><input id="cb1" type="checkbox" name="checker1"/></td><td>123</td><td>abc</td></tr>
<tr><td><input id="cb1" type="checkbox" name="checker1"/></td><td>456</td><td>def</td></tr>
<tr><td><input id="cb1" type="checkbox" name="checker1"/></td><td>789</td><td>ghi</td></tr>
</table>

I want to retrieve (using jquery) a javascript array of all checked ID's in the table.

So far I have the following jquery code which on the click of the jqcc button brings me an alert box for each of the checked items, so instead of alert, i need to retrieve the value of the second td and add it to an array,

$(document).ready(function() {
    var tableControl= document.getElementById('mytable');
    $('#jqcc').click(function() {
        $('input:checkbox:checked', tableControl).each(function() {
            alert('checked');
        });
    });
});

I have a table like below

<table id="mytable">
<tr><th>checked</th><th>id</th><th>text</th></tr>
<tr><td><input id="cb1" type="checkbox" name="checker1"/></td><td>123</td><td>abc</td></tr>
<tr><td><input id="cb1" type="checkbox" name="checker1"/></td><td>456</td><td>def</td></tr>
<tr><td><input id="cb1" type="checkbox" name="checker1"/></td><td>789</td><td>ghi</td></tr>
</table>

I want to retrieve (using jquery) a javascript array of all checked ID's in the table.

So far I have the following jquery code which on the click of the jqcc button brings me an alert box for each of the checked items, so instead of alert, i need to retrieve the value of the second td and add it to an array,

$(document).ready(function() {
    var tableControl= document.getElementById('mytable');
    $('#jqcc').click(function() {
        $('input:checkbox:checked', tableControl).each(function() {
            alert('checked');
        });
    });
});
Share Improve this question edited Mar 14, 2012 at 12:01 general exception asked Mar 14, 2012 at 11:54 general exceptiongeneral exception 4,3329 gold badges56 silver badges82 bronze badges
Add a comment  | 

5 Answers 5

Reset to default 9

You should do

$(document).ready(function() {
    var tableControl= document.getElementById('mytable');
   var arrayOfValues = [];
    $('#jqcc').click(function() {
        $('input:checkbox:checked', tableControl).each(function() {
            arrayOfValues.push($(this).closest('tr').find('td:last').text());
        }).get();
    });
});

arrayOfValues will hold the text inside the last td.

EDIT of course you could also use map

$(document).ready(function() {
    var tableControl= document.getElementById('mytable');
   var arrayOfValues = [];
    $('#jqcc').click(function() {
          arrayOfValues =  $('input:checkbox:checked', tableControl).map(function() {
            return $(this).closest('tr').find('td:last').text();
        });
    });
});

I want to retrieve (using jquery) a javascript array of all checked ID's in the table.

Try:

var ids = $("#mytable tr:has(input:checked)").map(function() {
   var $tr = $(this);
   var id = $tr.find("td:last").text();
   return id;
}).toArray();

alert(ids.join(", "));
var tableControl = document.getElementById('mytable');
$('#jqcc').click(function() {
    var result = []
    $('input:checkbox:checked', tableControl).each(function() {
        result.push($(this).parent().next().text());
    });
    alert(result);
});

See demo

First of all add the id as the value parameter of the checkbox as an input without a value is of little real use:

<table id="mytable">
    <tr><th>checked</th><th>id</th></tr>
    <tr><td><input id="cb1" type="checkbox" name="checker1" value="123" /></td><td>123</td></tr>
    <tr><td><input id="cb1" type="checkbox" name="checker1" value="456" /></td><td>456</td></tr>
    <tr><td><input id="cb1" type="checkbox" name="checker1" value="789" /></td><td>789</td></tr>
</table>

Then in jQuery, create your array:

var checkedValues = $("input:checkbox:checked", "#mytable").map(function() {
    return $(this).val();
}).get();
alert(checkedValues.join(','));

Working fiddle

This does what you ask for:

$(document).ready(function() {
    var tableControl= document.getElementById('mytable');
    $('#jqcc').click(function() {
        var obj = new Array();
        $('input:checkbox:checked', tableControl).each(function() {
            var innertext = $(this).parent().next().text();
            obj.push(innertext);
        });
            console.debug(obj); // Write it to the console
    });
});

​http://jsfiddle.net/uEr3n/

发布评论

评论列表(0)

  1. 暂无评论