1

Ajax 検索\提案ボックスを使用しようとしています。jQuery を使用して、フォーカスを失ったテキスト ボックスを処理します。ただし、提案リスト内のリンクをクリックすると、jQuery はぼかしイベントを発生させ、リンクはたどられません。jQueryコードは次のとおりです。

$(document).ready(function() {

    $('#lstxt').click(function() {
        this.value = '';
    });
    $('#lstxt').blur(function() {
        this.value = 'Database Search';
        document.getElementById('ls').innerHTML='';
        document.getElementById('ls').style.border='0px';
    });
});

候補リスト (id="ls_table") 内でリンクがクリックされた場合に .blur を起動しないようにするにはどうすればよいですか?

4

4 に答える 4

6
var global_switch = false;
$('#ls_table').hover (
  function () { global_switch = true; },
  function () { global_switch = false; }
)
$('#lstxt').blur(function() {
  if (global_switch) { return; } else { ...});

これは単なる概念実証です。いつものように、グローバル変数は良くありません。これを回避するには、jQuery のデータ APIを調べてください。

乾杯、

于 2009-07-07T19:41:06.097 に答える
0

このコードを試してください:

$(document).ready(function() {

    $('#lstxt').click(function() {
        this.value = '';
        return true;
    });
    $('#lstxt').blur(function() {
        this.value = 'Database Search';
        $('#ls').html('').css('border',"0px");
        return true;
    });
});

編集: テキスト ボックスの外側をクリックすると、ぼかしが発生します。lstxt はテキストボックスですか?

edit2:ぼかしイベントのバインドを解除し、条件付きで再バインドする必要があります。その方法を説明するには、ページ レイアウトに関する詳細情報が必要です。

于 2009-07-07T19:37:10.580 に答える
0

同様の問題を管理します(閉じるボタンをクリックする前に起動されたブラーのカスタムバリデーターを使用します-しかし、このブラーイベントが発生せずにダイアログ(クリック)を閉じたい)入力時のコード(バリデーターを使用):

      ..
      $(this).blur({validators: validators}, function(event){ // blur                                                
      (function($this){
         validator_timeout = setTimeout(function(){ // validator_timeout is global
           $this.validate(event.data.validators); // do some validation
         }, 50); // delay just minimum of time, but enough to let other event to be fired
       }($(this))); // passing $(this) to function
      });...

ダイアログを閉じるなどの他のイベント ハンドラーでは、validate で関数を呼び出したくない場合は、validator_timeout をクリアしてぼかしを抑制します。

   click_function = function(){                        
       clearTimeout(validator_timeout);
       $( this ).dialog( "close" );
   }   

誰かに役立つことを願っています。

于 2011-10-11T08:27:38.837 に答える