将值添加到输入 - jQuery

时间:2011-09-14 14:55:47

标签: jquery html

在我的网站上,我有一张门票清单。在该列表的顶部,我有这个复选框,可以检查列表中的所有复选框:

<input type="checkbox" id="checkall"  class="checkall" name="checkall">

此复选框使用以下jQuery检查所有其他复选框:

$(document).ready(function(){
    $('#checkall').toggle(function(){
        $('input:checkbox').attr('checked','checked');
        $(this).val('uncheck all')
    },function(){
        $('input:checkbox').removeAttr('checked');
        $(this).val('check all');        
    })
})


$('input:checkbox').click(function() {
    $("#userInfo").toggle(!($('input:checkbox:checked').length == 0));  
});

$('#close').click(function() {
    $("#userInfo").hide();
    $('input:checkbox').removeAttr('checked');  
});

虽然,但我还希望将所有选中的复选框值放入我的表单中。我使用此代码:

function updateTextArea() 
    {
         var allVals = [];
         $('#c_b :checked').each(function(){
           allVals.push($(this).val());
         });
         jQuery('#ticketIds').val(allVals);  
    }
    $(function() 
    {
          $('#c_b input').click(updateTextArea);
          updateTextArea();
    });

这是我的表格:

<form method="post" name="edit">  
   <input type="hidden" id="ticketIds" name="ticketIds" value="">       
   <input type="submit" class="button gray" value="Okay, do it" name=""> <a href="#" id="close">Close</a></form>

我的问题是,每当我使用“全部检查”复选框时,没有值被添加到#ticketIds。只有当我自己检查每个复选框时,才会添加值。

我该怎么做,所以两种方式都有效?

2 个答案:

答案 0 :(得分:1)

点击勾选/取消选中全部复选框后,尝试调用您的函数:

$(document).ready(function(){
    $('#checkall').toggle(function(){
        $('input:checkbox').attr('checked','checked');
        $(this).val('uncheck all')
        updateTextArea();
    },function(){
        $('input:checkbox').removeAttr('checked');
        $(this).val('check all');   
        updateTextArea();     
    })
})

答案 1 :(得分:-1)

我不确定我理解您要完成的任务,但这可能有所帮助:

$('#checkall').toggle(function(){
    $('input:checkbox').attr('checked','checked');
    $('input:checkbox').trigger('click'); // add this line
    $(this).val('uncheck all')
},function(){
//...