2012-01-27 50 views
2

利用可能なサービスのテーブルリストを返すクエリがあります。返されるサービスの各テーブル行には、Book、Send Info、No Thanksという3つのチェックボックスがあります。ユーザーが行の1つでチェックボックスの1をクリックするとJQuery - 行ごとにチェックボックスを有効/無効にする

echo '<td align="center">'.'<input type="checkbox" id="ckBook_'.$i.'" name="ckBook['.$i.']"></input>'.'</td>'; 
echo '<td align="center">'.'<input type="checkbox" id="ckSendInfo_'.$i.'" name="ckSendInfo['.$i.']" class="group1_'.$i.'"></input>'.'</td>'; 
echo '<td align="center">'.'<input type="checkbox" id="ckNoThanks_" name="ckNoThanks['.$i.']" class="group1_'.$i.'"></input>'.'</td>'; 

、その後、同じ行の他のチェックボックスは、彼らが有効にする必要がありそうでない、無効にする必要があります。私はラジオボタンを使用しようとしましたが、ブックのチェックボックスは底部の合計を返しています。ラジオボタンを使用すると、合計機能が失われます。

私は研究して、私が解決策にかなり近いと思っています。私はこのサイトで見つけたいくつかのコードを修正しましたが、最初の列のチェックボックス(任意の行)が選択されているときは、現在は2番目と3番目の列にのみ影響します。

$(function() { 
enable_cb(); 
$('input[id^=ckBook_]').click(enable_cb); 
$('input[id^=ckSendInfo_]').click(enable_cb); 
$('input[id^=ckNoThanks_]').click(enable_cb); 
}); 

function enable_cb() { 
if (this.checked) 
    { 
    $("input.group1_0").attr("disabled", true); 
    } 

else 
    { 
    $("input.group1_0").removeAttr("disabled"); 
    $("input.group1_1").removeAttr("disabled"); 
    } 

} 
+0

注:inputタグが自動終了タグです、あなたは ''なく 'それらを書く必要があります ' –

答えて

1

UPDATEこの

function enable_cb() { 
    if ($(this).is(':checked')){ 
     $("input.group1_0").attr("disabled", true); 
     }else{ 
     $("input.group1_0").attr("disabled", false); 
     $("input.group1_1").attr("disabled", false); 
     } 
    } 

を試してみてください。

$(':checkbox').click(function(){ 
    var elems = $(this).parents('tr').find(':checkbox'); 
    elems.not($(this)).attr('disabled',$(this).is(':checked')); 
}); 
+0

お試しいただきありがとうございます!しかし、それは前と同じ影響を与えます。チェックされたブックチェックボックス(Send InfoまたはNo Thanks)は、Infoを送信し、ありがとうございました。私は実際に返される各行に排他的であることが必要です。 – user1172854

+0

答えを更新しました..今すぐお試しください –

2

この単純なコードはそれを行います。

// bind a click handler on any of those checkboxes 
// withint the table #tableID 
$('input[type=checkbox]', '#tableID').click(function(e) { 

    // 'this' is the clicked checkbox 
    $(this).closest('tr') 
     // go to the TR parent and find all checkboxes, 
     // but exclude myself with .not() 
     .find('input[type=checkbox]').not(this) 
     // use .prop() to set special attributes like disabled 
     .prop('disabled', this.checked); 

}); 

DEMO

さらに読書:

+0

感謝します!それはうまくいった! – user1172854

+0

質問を正しく読めば答えは+1でした。 (私は私の答えを削除しました) – nnnnnn

+0

私はいくつかのコメントと、 "#table ID"(テーブルIDで変更)のテーブル内のチェックボックスにクリックイベントのバインドを制限するコンテキストを追加しました。 –

関連する問題