2011-07-27 9 views
0

上の入力フィールドにテキストをdissapearingと私はここから、このコードを使用しています:http://jsfiddle.net/davidThomas/9BpGC/JSの問題は、ONFOCUS

しかし、外部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'); 
        } 
       }); 
     } 
    ); 
} 

を、私は、検索のヒントをロードするためにボックスをクリックしない限り、それはIE8でFF5、Chromeで動作しますが、ではない - あなたが使用している場合jsFiddleのデモ、それは別のブラウザ間で正常に動作するので、外部のJSで動作するように修正する方法はありますか?

+0

おそらく、その外部の.jsファイルをどのように呼び出すのでしょうか?あなたはそれを呼び出すときにtype = "text/javascript"を設定しますか? – Warface

+0

steve

答えて

1

私の推測では、ファイルの外部性とは関係なく実装されています。

この場合、このロジックをこの関数に入れるのではなく、実際には$(document).readyに入れてください。このロジックは一度だけ発生する必要があり、ドキュメントが準備完了状態になると発生するはずです(これはどのようにthe JSFiddleですか)。あなたのコードは次のようになります:

$(document).ready(function() { 

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

}); 

これは、実行していることとその例が何をしているかの唯一の明らかな違いです。

+0

$(document).ready()でclearTextが呼び出された場合、これは同等でなければなりません... – justkt