获取所有选中复选框的值,并将它们放在隐藏字段中

时间:2013-03-26 14:30:07

标签: javascript jquery

如何修改这个简单的检查所有代码以获取复选框后的复选框的所有值,然后将它们放入隐藏的输入中,每个值应该用逗号分隔,这样我就可以在php中分解这些值。复选框位于表格行

//checks all and unchecks all checkboxes based on checkbox in first row of the table.
 $('th input:checkbox').click(function(e) {
    var table = $(e.target).parents('table:first');
    $('td input:checkbox', table).attr('checked', e.target.checked);

 });

4 个答案:

答案 0 :(得分:0)

你可以这样做:

$('th input:checkbox').click(function(e) {

   var currentChecked = $('#hiddenInput').val(); 

   if($(this).is(':checked'){
        $('#hiddenInput').val(currentChecked  + ',' + $(this).val());
   }

   //deleting the unchecked checkbox from the list
   else{
       var newValue = currentChecked .replace("," + $(this).val(), "");
   }

});

活生生的例子:http://jsfiddle.net/mR85S/

答案 1 :(得分:0)

您可以在此帖jQuery to populate hidden input but retain existing content尝试此操作:

function Populate(){
    vals = $('input[type="checkbox"]:checked').map(function() {
        return this.value;
    }).get().join(',');
    console.log(vals);
    $('#tags').val(vals);
}

$('input[type="checkbox"]').on('change', function() {
    Populate()
}).change();
     

jsFiddle

答案 2 :(得分:0)

我假设您的代码已经可以检查所有这些复选框。基本上,您只想获取您选中的每个复选框的值。

//checks all and unchecks all checkboxes based on checkbox in first row of the table.
 $('th input:checkbox').click(function(e) {
    var table = $(e.target).parents('table:first');
    var checkboxes = $('td input:checkbox', table).attr('checked', e.target.checked);
    var values = '';
    if(e.target.checked) {
       for(var i=0; i<checkboxes.length; i++) {
          values += $(checkboxes[i]).val() + ','; // the val method cant retrieve all the values of a set
       }
       values = values.substr(0, values.length - 1);
    }

    //place values in your hidden input

 });

这应该可以解决问题。

答案 3 :(得分:0)

这有帮助吗?

$('th input:checkbox').click(function (e) {
    var table = $(e.target).parents('table:first');
    var vals = [];
    $('td input:checkbox', table).each(function(){
        $(this).attr('checked', e.target.checked);
        vals.push($(this).attr('checked') ? $(this).val() : '');
    });
    $('#hidden').val(vals.join());
});