2012-12-01 24 views
0

大家好我如何檢查時,在一排中的所有其他複選框被選中我的意思的複選框 我有一個div表看起來像這樣如何檢查一行中所有複選框都被選中時的複選框?

<div id="Row-8"> 
    <span class="span2"> 
     <label class="checkbox"> 
      <input type="checkbox" class="regular-checkbox" onchange="checkallrowcheckboxes(this)" value="8" name="selectedObjects" id="8"><label for="rowcommoncheckbox-8"></label></label></span> 
    <span class="span2">AddOrEdit</span> 
    <span class="span2"> 
     <label class="checkbox"> 
      <input type="checkbox" value="8" class="regular-checkbox" name="chkAdd" id="Add-8"><label for="Add-8"></label></label></span> 
    <span class="span2"> 
     <label class="checkbox"> 
      <input type="checkbox" value="8" class="regular-checkbox" name="chkEdit" id="Edit-8"><label for="Edit-8"></label></label></span> 
    <span class="span2"> 
     <label class="checkbox"> 
      <input type="checkbox" value="8" class="regular-checkbox" name="chkDel" id="Delete-8"><label for="Delete-8"></label></label></span> 
    <span class="span2"> 
     <label class="checkbox"> 
      <input type="checkbox" value="8" class="regular-checkbox" name="chkview" id="View-8"><label for="View-8"></label></label></span> 
</div> 

它看起來像這樣

ChkColumn PageName Chk1 Chk2 Chk3 Chk4 

我想要的是,當右側os行中的所有複選框都被選中時,左側複選框應該被自動檢查..當Chk1 Chk2 Chk3 Chk4被檢測到時應該自動檢查Chkcolumn ..

+0

它仍然沒有很大的意義。你有什麼嘗試?你有小提琴嗎? – qooplmao

回答

0

演示在這裏:http://jsfiddle.net/Mx4q2/

我加了一些 '駕駛'/ '驅動' 類的複選框,然後使用該腳本:

function driveCheckbox(event){ 
    var $currentRow = $(this).parents('.row'); 

    var $checkedDrivers = $currentRow.find('.driving-checkbox:checked'); 
    if($checkedDrivers.length == 4){ 
     $currentRow.find('.driven-checkbox').prop('checked', true); 
    } else { 
     $currentRow.find('.driven-checkbox').prop('checked', false); 
    } 
} 

function selectAll(event){ 

    var $currentRow = $(this).parents('.row'); 

    var $targets = $currentRow.find('.driving-checkbox'); 
    if($(this).is(':checked')){ 
     $targets.prop('checked', true); 
    } else { 
     $targets.prop('checked', false); 
    } 
} 
$('.driving-checkbox').change(driveCheckbox); 
$('.driven-checkbox').change(selectAll); 

+0

所有驅動複選框在div網格中檢查時,當我這樣做一行 – SoftwareNerd

+0

對不起,錯誤的演示URL - 嘗試更新的演示URL。 –

+0

再次更新,現在迎合多行(請參閱最新的演示網址) –

2

無恥自我推銷:這似乎是一個完美的使用案例a jQuery plugin I've written

試試這個:

$('#Row-8 input[type="checkbox"]:first') 
    .checkAll('#Row-8 input[type="checkbox"]:not(:first)');​ 

演示:http://jsfiddle.net/mattball/9ErH6

+1

但是如果用戶選擇了右側的所有複選框,則應該選中左側的複選框否?但它沒有發生。 – Raghurocks

+0

好點。更新。 –

+0

我認爲他們想要的東西與您所演示的完全不同。這聽起來像是他們想要右邊的4個複選框來驅動左邊的那個,而不是左邊的那個驅動右邊的四個。 –

0
$(function() { 
    $('#Row-8 input').change(function() { 
     var add8 = $('#Add-8').is(':checked'); 
     var edit8 = $('#Edit-8').is(':checked'); 
     var delete8 = $('#Delete-8').is(':checked'); 
     var view8 = $('#View-8').is(':checked'); 
     if (add8 && edit8 && delete8 && view8) { 
      $('#Row-8 input').attr('checked',false); 
      $('#8').attr('checked',true); 
     } 
    }); 
}); 
+0

這不是基於一個單獨的div ...可能有多個div – SoftwareNerd

+0

它們都基於ID,你是什麼意思?他有他的html結構的方式,這是我能做的最好的。理想情況下,我將在一個組中擁有正確的4個複選框,以便我可以更輕鬆地引用它們,從而減少此工作所需的代碼。 – zeMinimalist

相關問題