2011-07-27 31 views
0

在輸入字段dissapearing文本我使用這個代碼從這裏:http://jsfiddle.net/davidThomas/9BpGC/JS問題在IE中,對聚焦狀態

但作爲一個外部JS文件。

我:

<input type="text" id="text1" name="text1" placeholder="First text input box." onfocus="clearText()" /> 

外部JS:

function clearText() 
{ 
    $('input:text').each(
     function(){ 
      $(this) 
       .val($(this).attr('placeholder')) 
       .css('color','#999'); 
      $(this).click(
       function(){ 
        $(this) 
         .val('') 
         .css('color','#000'); 
       }); 
      $(this).blur(
       function(){ 
        if ($(this).val() === ''){ 
         $(this) 
          .val($(this).attr('placeholder')) 
          .css('color','#999'); 
        } 
       }); 
     } 
    ); 
} 

它工作在FF5,Chrome,但不是在IE8,除非我在框中單擊加載搜索提示 - 如果您使用在jsFiddle上演示,它可以在不同的瀏覽器上正常工作,所以有辦法解決它與外部JS一起工作嗎?

+0

也許這就是你如何調用外部.js文件...你是如何做到的?當你打電話時,你是否設置了type =「text/javascript」? – Warface

+0

steve

回答

1

我的猜測:它不必與文件的外部性,但你的實施。

在這種情況下,您應該真的把它放在一個函數(clearText())中,而不是放在$(document).ready;這個邏輯只需要發生一次,並且應該在文檔準備就緒時發生(這是the JSFiddle的做法)。你的代碼應該看起來更像這樣:

$(document).ready(function() { 

    // Placeholder text logic 
    $('input:text').each(function() { 
     // the code you already have 
    }); 

}); 

這是你在做什麼和那個例子之間唯一明顯的區別。

+0

如果在$(document).ready()中調用clearText,它應該等價於... – justkt