2009-09-25 42 views
0

我寫過一些代碼,可以讓我在輸入表單上顯示一些灰色的文本,當用戶關注它時,文本會消失並變得沒有任何意義,如果有道理...onfocus&onblur無法在IE中工作

function editableAlt (elem, colour1, colour2) { 
    var elem = document.getElementById(elem); 
    elem.onfocus = function() { 
     if(this.value == this.defaultValue) { 
      this.value = ""; // remove the default text, so the user can enter their own 
      this.style.color = "#" + colour1; // change the text colour 
     } 
    }; 
    elem.onblur = function() { 
     if(this.value == '') { 
      this.value = this.defaultValue; // user left it blank? revert back to the default text 
      this.style.color = "#" + colour2; // and change the colour back too 
     } 
    } 
} 

這是工作在大多數頁面上,但在一個由於某種原因onfocus和的onblur是不工作 - 如果我改變它例如以它的onclick觸發沒有問題。

還有什麼我可以嘗試嗎? :(我使用JQuery,但除去這似乎並沒有在所有實現它。

乾杯

+0

作品在我的IE6千恩萬謝:http://jsbin.com/aduni你做。東西在你的代碼的其他錯誤別處 – 2009-09-25 15:12:08

+0

謝謝,我甚至試過這種使用jQuery無濟於事: \t \t如果($( 「#Absence_Hours」)長度> 0){ \t \t \t $此= $(本); //緩存變量 \t \t \t $ this.focus(函數(){ \t \t \t \t警報( '試驗'); \t \t \t}); \t \t} 改變焦點()點擊()工作正常,但... – Nick 2009-09-28 09:42:09

回答

3

我發現IE瀏覽器是非常無情的,當涉及到JavaScript錯誤。我跑你的代碼通過JSLint的,並得到了如下錯誤:


錯誤:在第2行的字符14 問題: 'ELEM' 已定義

var elem = document.getElementById(elem); 

PROBL em在第10行字符23:使用'==='與''比較。

if(this.value == '') { 

問題在第14行字符6:缺少分號。

} 

隱含全球:文件2


不是要吝嗇幫助您的或任何東西,但我猜,如果你修復這些錯誤,你會看到更理想的結果。祝你好運!

+0

哦,好點 - 謝謝inkedmn!介意我問你用什麼來調試?我沒有在IE或Firebug中遇到錯誤。 謝謝 – Nick 2009-09-25 14:56:53

+1

http:// jslint。在調試javascript時,com是你最好的朋友(在Firebug旁邊),特別是當事情只是在IE中打破。它無數次地拯救了我的培根。 – inkedmn 2009-09-25 14:57:30

+0

偉大的網站,謝謝! – Nick 2009-09-25 15:00:23

0

真是個白癡,對不起傢伙!我試圖刪除所有其他的Javascript文件,但錯過了最重要的一個,它被封裝在PHP和IE中,如果聲明,德哦!

口魚sfFocus正在施加導致它打破:http://htmldog.com/articles/suckerfish/shoal/

對不起:(&您的建議