2010-06-25 35 views
10

çalışmaz I Krom/FF mükemmel çalışıyor şu kodu vardır:Onchange/onclick bir onay kutusu IE

chkbx_send_demo.onchange = function(){ 
    if(sel_template.selectedIndex <= 0 && chkbx_send_demo.checked == true){ 
     alert("Choose a Template"); 
     sel_template.selectedIndex = 1; 
    } 
    if(chkbx_send_demo.checked == false){ 
     sel_template.selectedIndex = 0; 
    } 
} 

Ama sadece IE çalışmaz. Etkinliği chkbx_send_demo.onclick olarak değiştirmeyi denedim ve hala çalışmayacak.

+1

Muhtemelen zaten kontrol ettiniz, ancak: "chkbx_send_demo" ifadesinin doğru onay kutusunu işaret ettiğinden emin misiniz? Bir uyarı yapabilir ve onaylayabilir misiniz? Ayrıca, FF'de tam olarak aynı kod çalışması var mı? – Nivas

cevap

16

Internet Explorer, yalnızca onay kutusu odağı kaybettiğinde (onblur), onchange olayı tetiklenir. burada da bakınız: buraya
http://krijnhoetmer.nl/stuff/javascript/checkbox-onchange/
ve:
http://bytes.com/topic/javascript/answers/92116-onchange-checkbox

+1

IE davranışı, online ilişkin HTML belirtimine göre doğrudur. "Onchange olayı, bir denetim giriş odağını kaybettiğinde ve odak değeri kazanıldığından beri değeri değiştirildiğinde oluşur. Bu öznitelik aşağıdaki öğeler için geçerlidir: INPUT, SELECT ve TEXTAREA." http://www.w3.org/TR/REC-html40/interact/scripts.html#adef-onchange –

1

emin onclick çalışmıyor misiniz? Javascript hatalarını kontrol ettiniz mi? Bu yalnızca onclick içindir:

IE7 aşağıdaki işleri

<html> 
    <head> 
     <script> 
      function text() 
      { 
       alert(document.getElementById("cbxTest").checked); 
      } 
     </script> 
    </head> 
    <body> 
     <input type="checkbox" name="cbxTest" id="cbxTest" onclick="text()"/> 
     <label for="cbxTest"> Test </label> 
    </body> 
</html> 

Not (IE6 test etmek gerekmez). OnChange, IE'de farklı çalışır, bkz. GOsha'nın cevabı.

+0

Çalıştığımdan% 100 eminim (onclick işlevinin her adımında uyarıları koydum) ama garip ben script hata ayıklama değil javascript hataları. –

+0

Muhtemelen zaten kontrol ettiniz, ancak: "chkbx_send_demo" ifadesinin doğru onay kutusunu işaret ettiğinden emin misiniz? Bir uyarı yapabilir ve onaylayabilir misiniz? Ayrıca, FF'de tam olarak aynı kod çalışması var mı? – Nivas

+0

Buna inanamıyorum, bir uyarı yaptım (chkbx_send_demo.type); ve 'gizli' var ... document.getElementById ("demo") bu öğeyi nasıl alabilir: bunun yerine: ?? (ve bu neden sadece IE'de oluyor?) Ama her neyse, teşekkürler, her şey şu anda net –

0

benim JS kodu artık böyle bir şey olur:

if(navigator.appName == "Microsoft Internet Explorer"){ 
      alert("IE"); 
      chkbx_send_demo.onclick = function(){ 
       alert("HI"); 
       if(sel_template.selectedIndex <= 0 && chkbx_send_demo.checked == true){ 
        alert("Choose a Template"); 
        sel_template.selectedIndex = 1; 
       } 
       if(chkbx_send_demo.checked == false){ 
        alert("HI"); 
        sel_template.selectedIndex = 0; 
       } 
       alert("HI"); 
      } 
     } 
     else 
     { 
      chkbx_send_demo.onchange = function(){ 
       if(sel_template.selectedIndex <= 0 && chkbx_send_demo.checked == true){ 
        alert("Choose a Template"); 
        sel_template.selectedIndex = 1; 
       } 
       if(chkbx_send_demo.checked == false){ 
        sel_template.selectedIndex = 0; 
       } 
      } 
     } 

Hiçbir javascript hataları, ancak kod sadece IE üzerinde yürütülmez ve gerçekten anlayamıyorum.

+0

Ayrıca HTML'nizi de gönderebilir misiniz? Chkbx_send_demo'yu nasıl buldunuz? –