2013-05-22 19 views
5

check indeterminate states için bir çözüm öneren bu konuya uymaya çalıştım.'İşaretli' durumu için tıklatılmış belirsiz onay kutuları nasıl işaretlenir

ASP.NET kullanıyorum ve belirsiz durumda bir onay kutusunu tıklatarak işaretini kaldırın ve herhangi bir olayı tetiklemiyor gibi görünecektir (temeldeki onay kutusu aslında 'işaretlenmemiş'). Belirsiz durumda olan bir onay kutusunu tıkladığımda Javascript'i kontrol etmeyi düşünüyordum (mantığı bu şekilde tercih et, ve bu benim ASP.NET olayımı tetiklemeli).

$(document).ready(function() { 
    $(".UndefinedCheckboxState :checkbox").prop("indeterminate", true); 

    $(":checkbox").click(function() { 
     if ($(this).prop("indeterminate")) { 
      $(this).prop("indeterminate", false); 
      $(this).prop("checked", true); 
     } 
    }); 
}); 

GÜNCELLEME: tıklama etkinliği çalışıyor, ancak if koşul asla doğrudur! Belirsiz durumda onay kutularını tıklatmaya devam etmekteyim ...

+1

OT Fiddle tarih: ' $ (this) [0] === bu yanlış değilse. – Dogbert

+0

Şimdi biraz kafam karıştı, bir cevap yayınladı, ancak herhangi bir javascript olmadan bile onları tıkladığımda onay kutularının işaretlenmiş gibi görünüyor ve değişiklik olayı her zaman tetikleniyor -> [** fiddle **] (http://jsfiddle.net/m2Dj9/2/), ben de aynı sonucu elde edemiyorum. – adeneo

+0

Aslında sizin çalıştığınız şeyi denedim, şimdi IE'de varsayılan davranışın işaretlenmemiş olduğunu ve kromun tersini belirsiz görüyorum. – Jerome

cevap

8

Tıklanan onay kutusu belirsiz bir duruma sahipse, tıklama olayındaki ilk talimata göre bu özelliğin çoktan gitmiş olduğu ortaya çıkıyor.

uzakta henüz soluk bir şeyi test etmek benim mantığı yerini almıştır:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".UndefinedCheckboxState :checkbox").prop("indeterminate", true); 

     $(":checkbox").click(function() { 
      if ($(this).closest("span").hasClass("UndefinedCheckboxState")) { 
       $(this).prop("indeterminate", false); 
       $(this).prop("checked", true); 
      } 
     }); 
    }); 
</script> 
2

adeneo cevabı @ genişletme, şunu deneyin:

$(document).ready(function() { 
    $(".UndefinedCheckboxState input[type='checkbox']").prop("indeterminate", true); 

    $("input[type='checkbox']").on('click', function() { 
     console.log('changed'); 
     console.log('current value: '+$(this).prop('checked')); 
    }); 
}); 

Görünüm

İlgili konular