Özelliği HTML Checkbox alma değeri değiştiğinde olaylar/
<input type="checkbox" onclick="FuncToCall()" onchange="FuncToCall()" />
onclick
onchange
sırayla checkbox değeri (yani devlet) değiştirmeden önce ve checkbox.value
özelliği her zaman açıktır anlam denir.
Nasıl bir devlet/denetlenmeyen olay bu yaptıklarına bakılırsa belirliyorsunuz?
CEVAP
Kısa cevap:
Değeri güncellendi sonra, istediğiniz zaman yangınlar için: kadar ateş etmiyor click
olay, kullanın
<label><input type='checkbox' onclick='handleClick(this);'>Checkbox</label>
function handleClick(cb) {
display("Clicked, new value = " cb.checked);
}
Uzun cevap:
change
olay işleyicisi değil denir kadar checked
devlet güncellendi (live example | source), ama çünkü (Tim Büthe işaret olarak yorum) YANİ yok yangın change
olaya onay kutusunun odağı kaybettiğinde, anlamıyorsun bildirim proaktif. Sen bir tık daha kötü YANİetiketiçin onay kutusu (checkbox yerine kendisi) için Güncelleştirme, izlenim, o getirdiğine göre, eski değer (TL ile IE buraya tıklayarak etiketi: live example | source). Çünkü eğer bu onay kutusu vardır odak tıklayarak etiketini alır odaklanma, ateş change
olay ile eski değer ve click
olur ayar yeni değeri ve odak ayarı geri checkbox. Çok kafa karıştırıcı.
Ama eğer click
yerine kullanırsanız bu tatsızlık tüm önleyebilirsiniz.
Ben de kullandım DOM0 işleyicileri (onxyz
öznitelikleri) çünkü ne olduğunu sordu, ama haberiniz olsun, Ben ki genelde tavsiye çengel işleyicileri kod (DOM2 addEventListener
attachEvent
eski versiyon YANİ) yerine kullanarak onxyz
öznitelikleri. Aynı öğe için birden fazla işleyicileri eklemek ve adamların tüm genel işlevleri yapmaktan kaçınmaya olanak sağlar.
Bu cevap daha önceki bir sürümü handleClick
bu kod kullanılır:
function handleClick(cb) {
setTimeout(function() {
display("Clicked, new value = " cb.checked);
}, 0);
}
Amaç ' I tamamlamak için izin vermek için değer bakmadan önce gibiydi. Farkındayım kadarıyla, bunun için bir sebep yok, ve neden yaptığımı hiç bilmiyorum. Değeri click
işleyicisi önce değişti. Aslında, spec quite clear about that. setTimeout
olmadan sürümü gayet iyi denedim her tarayıcıda (hatta IE6 da çalışır. Sadece biraz düşünüyordum varsayabilirizdiğerolaydan sonra bir değişiklik yapılmadı platform. Her durumda, hiçbir neden HTML kutuları ile yapıyorum.
Nasıl'In değişken değeri değiştiğ...
ASP.NET almak Checkbox Değeri 4 MVC...
Nasıl olsun Anahtarı ayırt edebilirim,...
jQuery select değiştiğinde değeri olsu...
mvc asp.net neden Html.CheckBox ek giz...