2011-09-14 23 views
0

私のウェブサイトにはチケットのリストがあります。そのリストの一番上で、私は、このチェックボックスを持って、それがリスト内のすべてのチェックボックスをチェックすることができます。入力に値を追加する - jQuery

<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> 

私の問題は、私は、チェックボックス「すべてをチェック」を使用したときに、NO値が#ticketIdsに追加されていない、です。各チェックボックスを自分でチェックすると、値が追加されます。

どのようにすればいいのですか?両方の方法で動作しますか?

+0

を、あなたは'.prop( 'checked'、val)'を使うことができます。 'val'はブール値です。 – ThiefMaster

答えて

1

あなたがチェックをクリックすると、すべてのチェックボックスをオフに/あなたの関数を呼び出してみてください。FYI

$(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();  
    }) 
}) 
+0

ありがとう!魅力的な作品 –

-1

ない私はあなたが達成しようとしているのか理解が、これは役立つかもしれないことを確認:

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

非常に悪い... 'updateTextArea()'は、ページ上のすべてのチェックボックスに対して1回呼び出されています。一度呼び出されるだけです。 –

関連する問題