2011-08-05 15 views
8

İşaretlenmemiş onay kutularını işaretlendiğinde, işaretlenmemiş tüm onay kutularını devre dışı bırakmaya çalışıyorum.Jquery onay kutularını işaretlemeyi ve devre dışı bırakma onay kutularını işaretleme

Kodum işte burada çalışmıyor: http://jsfiddle.net/mtYtW/18/

Benim jQuery:

var countchecked = $('table input[type="checkbox"]').find(":checked").length 

    if(countcheckhed > 5) { 
     $("table input:checkbox").attr("disabled", true); 
    } else {} 

Benim HTML:

<table cellspacing="0" cellpadding="0" width="770px;"> 
    <tbody><tr style="border: 1px solid green; height: 40px; font-size: 14px;"> 
    <th>Feature 1</th> 
    <th>Feature 2</th> 
    <th>Feuture 3</th> 
    </tr> 

    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
    <tr> 
    <td class="checkit"><input type="hidden" value="0" name="search[windows_is_true]"><input type="checkbox" value="1" name="search[windows_is_true]" id="search_windows_is_true"></td> 
    <td>Test 1</td> 
    <td>Test 2</td> 
    <td>Test 3</td> 
    <td>Test 4</td> 
    <td>Test 5</td> 
    <td>Test 6</td> 
    </tr> 
</tbody></table> 
+0

yanı soruya kodunuzu ekleyin. Gelecekte jsfiddle hiç kaybolursa soru hala geçerli olacaktır. –

+0

Sağladığınız js, sadece kodun yüklenmesinden geçer ve tekrar kontrol etmez. Tüm onay kutularını alıp bir .click özelliği eklemeye ve kontrol sayısını yeniden değerlendirmeye çalışın. –

+0

countcheckhed yanlış yazılmış. – Narnian

cevap

7

ihtiyaçlarınız için hile yapmak gerekir aşağıdadır:

$("table input[type=checkbox]").click(function(){ 
var countchecked = $("table input[type=checkbox]:checked").length; 

if(countchecked >= 5) 
{ 
    $('table input[type=checkbox]').not(':checked').attr("disabled",true); 
} 
else 
{ 
    $('table input[type=checkbox]').not(':checked').attr("disabled",false); 
} 

});

Example for your needs

(Jenerik) Aşağıdakiler kontrolsüz Onay kutularının tümünü devre dışı bırakacaktır:

$('input[type=checkbox]').not(':checked').attr("disabled","disabled"); 

Generic Disable Example

+0

6 onay kutusundan biri işaretlenmediğinde tüm onay kutuları nasıl etkinleştirilir? –

+1

Başka bir deyim de bunu işliyor :) İlk örneği kontrol edebilirsiniz –

+0

Çok teşekkürler! Mükemmel bir örnek. – Drako

0

kere senin onay kutularının geri kalanını devre dışı bırakmak istediğiniz tahmin kontrol edilen onay kutularının sayısı 5'ten fazla olur. Durum böyle ise şunu deneyin:

$('table input[type="checkbox"]').click(function(){ 
    var countchecked = $('table input[type="checkbox"]').filter(":checked").length; 

    if(countchecked > 4) { 
     $("table input:checkbox").not(":checked").attr("disabled", true); 
    } else {} 
}); 

Çalışma örneği: http://jsfiddle.net/mtYtW/30/

Eğer sayfa yüklemesinde onay kutularını devre dışı bırakmak ve daha sonra bu deneyin kontrol edilir 5'ten fazla onay kutularını varsa doğrulamak isterseniz:

$(function(){ 
    var countchecked = $('table input[type="checkbox"]').filter(":checked").length; 

    if(countchecked > 4) { 
     $("table input:checkbox").not(":checked").attr("disabled", true); 
    } else {} 
}); 
+0

"> 5" kısmı 6 onay kutusunu seçmeye izin verecek. – brezanac

+0

@holodoc: Sorunun bir kısmı '5 onay kutusu işaretlendiğinde' yanıtını kaçırdı ve OP'nin orijinal Kodunu kullandı. – Chandu

+0

LOL, insanlara bu sözlerden sonra çözümlerini nasıl değiştirdiğini izlemek için çok eğlenceli: D – brezanac

1

Kodunuz birkaç önemli konularda, yakındı.

$(function() { 
    $('table input[type="checkbox"]').change(function() { 
     var countchecked = $('table input[type="checkbox"]').filter(":checked").length 

     if (countchecked >= 5) { 
      $("table input:checkbox").not(":checked").attr("disabled", true); 
     }else{ 
      $("table input:checkbox").attr("disabled", false); 
     } 
    }); 
}); 

büyük

http://jsfiddle.net/mtYtW/37/

, kodunuz sadece onload yürütme vardı.
$('table input[type="checkbox"]').change(function() { 

Sen, bu countchecked countcheck olmasaydı yanlış yazılmış değişken adıydı vardı: Bunu onay kutularından biri kontrol edilir her zaman çalıştırmak için gereken, bu parçasıdır.

filter'u gerçekten istediğinde find kullanıyordunuz. Bul, kümenizdeki elemanların torunlarını araştıracak, onları filtrelemek istediniz. Eğer Yani >= olmalıdır 5'e AT devre dışı bırakmak istediği ifade zaman

Sen > 5 vardı.

TÜM onay kutularını devre dışı bırakıyordunuz, yalnızca belirtildiği gibi işaretlenmemiş değil, .not(":checked") ekledim.

Ve son olarak, muhtemelen bir kontrolsüz olsaydı bunları yeniden etkinleştirmek istediğiniz düşündüm, bu yüzden ekledi: prop jQuery 1.6 özeldir

}else{ 
    $("table input:checkbox").attr("disabled", false); 
} 
0
$(':checkbox').bind('click', function(){ 
    if($(':checkbox:checked').length >= 5) { 
     $(':checkbox').not(':checked').prop('disabled', true); 
    } else { 
     $(':checkbox').not(':checked').prop('disabled', false); 
    } 
}); 

Not söyledi. JQuery < 1.6 durumunda attr kullanın.

3
$('table input[type="checkbox"]').click(function(){ 
    var countcheck = $('table input[type="checkbox"]:checked').length; 
    if(countcheck > 4) { 
     $("table input:checkbox:not(:checked)").attr("disabled", true); 
    }else 
    { 
     $("table input:checkbox").attr("disabled", false); 
    } 
}); 

Çalışma Örnek: http://jsfiddle.net/mtYtW/48/

NOT: beş tane seçimini bu kod onay kutularını sağlayacak!

+0

Hayır, bu işe yaramaz. 6 onay kutusu seçilecek. – brezanac

0
$("table input[type=checkbox]").click(function(){ 
    var countchecked = $("table input[type=checkbox]:checked").length; 
    if(countchecked >= 5) { 
     $("table input:checkbox").attr("disabled", true); 
    }else{ 

    } 
}); 

Çalışma örneği: http://jsfiddle.net/Re5uy/6/

İlgili konular