2010-06-25 52 views
10

工作,我有下面的代碼,這在Chrome/FF完美的作品:的onchange /的onclick的複選框不能在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; 
    } 
} 

,但它只是將無法在IE瀏覽器。我試圖將事件更改爲chkbx_send_demo.onclick,但它仍然不起作用。

+1

可能你已經檢查過,但是:你是否確定「chkbx_send_demo」是指正確的複選框?你能做一個警報並確認嗎?另外,在FF中使用完全相同的代碼? – Nivas 2010-06-25 13:19:33

回答

16

當複選框失去焦點(onblur)時,Internet Explorer僅觸發onchange事件。 也是在這裏看到:
http://krijnhoetmer.nl/stuff/javascript/checkbox-onchange/
這裏:
http://bytes.com/topic/javascript/answers/92116-onchange-checkbox

+1

根據關於onchange的HTML規範,IE行爲是正確的 「onchange事件發生在控件失去輸入焦點並且其焦點自獲得焦點後已被修改,該屬性適用於以下元素:INPUT,SELECT和TEXTAREA。 http://www.w3.org/TR/REC-html40/interact/scripts.html#adef-onchange – 2012-12-17 06:14:36

1

確定的onclick 不起作用?你檢查了JavaScript錯誤嗎?

在IE7下工作(沒有IE6測試)

<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> 

注意:這僅僅是對的onclick。 OnChange在IE中的工作方式不同,請參閱GOsha的答案。

+0

我100%確定它不工作(我把警報放在onclick函數的每一步中),但奇怪的是,當我調試腳本時沒有javascript錯誤。 – 2010-06-25 13:11:17

+0

可能您已經檢查過,但是:您是否確定「chkbx_send_demo」是指正確的複選框?你能做一個警報並確認嗎? 另外,在FF中工作的代碼完全相同? – Nivas 2010-06-25 13:19:10

+0

我不敢相信,我做了一個警告(chkbx_send_demo.type);並獲得'隱藏'... document.getElementById(「演示」)如何獲取此元素: 而不是這一個: <輸入type =「checkbox」id =「demo」name =「demo」value =「1」title =''tabindex =「107」> ?? (爲什麼這隻發生在IE ??)但無論如何,謝謝,現在一切都清楚 – 2010-06-25 13:33:10

0

我的JS代碼現在是這樣的:

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; 
       } 
      } 
     } 

沒有JavaScript錯誤,但是代碼只是沒有在IE瀏覽器執行,我真的不明白爲什麼。

+0

你也可以發佈你的HTML?你是如何得到'chkbx_send_demo'的? – 2010-06-25 23:25:44