2009-07-12 11 views
0

別の問題があります。私はJQuery-1を使って自分のページに簡単な対話性を追加しています。要するに、ページには右上の検索テキストボックスが含まれています(document.ready)。単純にinputHint()関数を呼び出して、 "search products"というフレーズをテキストボックスに追加します。ユーザーがこのテキストボックスをクリックすると、別の関数(この場合はhideHint())が呼び出され、デフォルトの「検索製品」というフレーズが隠されます。最後に、ユーザーが入力せずにテキストを残してページの他の場所をクリックすると、ヒントが再度表示されます。ここではjavascriptのUSERDの作品です:
Jqueryブラウザとの互換性の問題、どうしたのですか?

$.fn.inputHint = function(options) { 
    options = $.extend({hintClass: 'hint'}, options || {}); 

    function showHint() {   
     if ($(this).val() == '') { 
     $(this).addClass(options.hintClass).val($(this).attr('accesskey'));    
     } 
     else{} 
    } 

    function removeHint() {  
     if ($(this).hasClass(options.hintClass)) $(this).removeClass(options.hintClass).val('');    
    } 

は、ここでdocument.readyハンドラです(またはあなたがそれを呼ぶかもしれないものは何でも):

$(document).ready(function(){ 

/* Initialize hint*/      
    $(function() { 
    $('*[@accesskey]').inputHint(); 
    });});  

このコードは、魔法のように動作するように所望の機能性を取得しますGoogle ChromeとSafariでのみ使用できます。 IEとFirefoxの両方が非常にうまく動作しています(ヒントはうまくいきますが、ページをリロードすると魔法のように停止します)。私のコードはこの邪魔な振る舞いに責任を負っていますか、それともJQuery自体の問題ですか(私はいつもJQueryがすべての主要なブラウザと互換性があると聞いていました)。アイデア!?
PSは:それはあなたのレディ機能ですでにだとして、これはjQueryの-1これは、ロングショットのビットであるかもしれない

+0

"jQueryの-1" とは何ですか? "jQuery 1.3.2"とまったく違うのですか? (公式のjQueryライブラリの現在のリリース) –

+0

はい私はそれがJQuery 1.0だと思います。実際、私たちのチームのデザイナーの一人が最初から使っていました。 jQuery 1.3.2と置き換えるべきですか?言い換えれば、 – Galilyou

+0

! – redsquare

答えて

2

である、)$関数(中inputHint()への呼び出しをラップする必要は、ありません。これを試してみてください:

$(document).ready(function(){ 
    /* Initialize hint*/ 
    $('*[@accesskey]').inputHint();  
}); 
2

あなたのヒントを保存するためにaccesskey属性を使用している理由は、私はわからないんだけど、とにかく...

$.fn.inputHint = function(options) { 
    options = $.extend({ hintClass: 'hint' }, options || {}); 

    $this = $(this); 
    hintValue = $this.attr("accesskey"); 

    function showHint() { 
     if ($this.val() == "") { 
      $this.addClass(options.hintClass).val(hintValue); 
     } 
    } 

    function removeHint() { 
     if ($this.hasClass(options.hintClass)) { 
      $this.removeClass(options.hintClass).val(""); 
     } 
    } 

    $this.blur(showHint) 
     .focus(removeHint) 
     .addClass(options.hintClass) 
     .val(hintValue); 
}; 
関連する問題