3

テーブルに一連の行があり、それぞれに異なる値(価格)があり、各行にチェックボックスがあります。このテーブルは、PHPループを介して生成されます。

echo "<table border='0' cellpadding='10' id='booking-list'><tr>";
echo "<th>Booking ID</th><th>Customer ID</th><th>Start Date</th><th>Course Name</th><th>Amount Due</th><th>Date Payment Due</th><th>Add to basket</th></tr>";
$x = 0; 
while ($row = mysql_fetch_assoc($query)) {
    $balance = $row['price'] - $row['deposit'];

    echo "<td>" .$row['booking_id']. "</td><td>" .$cust_id. "</td><td>" .$row['start_date']. "</td><td>" .$row['name']. "</td><td>" .$balance. "</td><td>" .$row['balance_due_date']. "</td><td><input type='checkbox' name='' value='" .$x. "' /></td></tr>";
    $x++;
}
echo "</tr><table>";

.appendチェックされているすべてのチェックボックスについて、特定の値($balance)をform入力フィールドに追加()したいと思います。追加部分は機能しているようですが、jQueryでチェックされている各チェックボックスをループして、必要な値を取得する方法がわかりません。

function(){
    $('#booking-list input:checkbox').change(
        function(){
            if ($(this).is(':checked')) {
        $('<input />').attr({
                type: 'text',
            id: 'foo',
            name: 'bar',
        value: '<?php echo $balance; ?>'
        }).appendTo('#paypal-form form').text($(this).val());              
            } else {
                $('#paypal-form input:contains('+$(this).val()+')').remove();
            }
        }); 

現在、$balance生成された最後の値しか取得できません。

ありがとう。

4

4 に答える 4

10

チェックしたチェックボックスをすべて選択するには、次のようにします。

  $('#booking-list input:checkbox:checked').each(function(){
      $(this).doSomething();//this is the checked checkbox
  });
于 2012-08-25T19:29:00.900 に答える
3

ループの後に使用$balanceしているため、最後の値のみを取得しています。

イベント ハンドラーで値を直接使用するには、ループ内のチェックボックスごとに個別のイベント ハンドラーを作成する必要があります。代わりに、チェックボックスのデータに残高値を入れることができます。

<input type='checkbox' name='' value='" .$x. "' data-balance='" .$balance. "' />

次に、イベント ハンドラーで使用できます。

value: $(this).data('balance')

補足: 現在、入力を追加するためのコードしかないため、誰かが何かをチェックしてからチェックを外しても、入力はまだそこにあります。

于 2012-08-25T19:33:54.640 に答える
1

入力のIDを再利用しているためだと思います。入力の ID を $cust_id として入れてみましたか?

以下のそれぞれの構文:

$('selector').each(function (index, currentObject) {
   // index starts with 0
   $(currentObject).doSomething();
});
于 2012-08-25T19:30:50.977 に答える
0

onClickチェックボックスイベントでも このコードを呼び出すことができます。

$(':checkbox:checked').each(function() {

});
于 2014-12-01T08:39:21.430 に答える