0

1 つのテキスト入力フィールドと 1 つのボタンがあります。

<input type="text" id="myInput" onblur="saveValue();" />    
<input type="button" id="myButton" />

Blur イベント ( 入力フィールド ) で、関数 ( saveValue ) が呼び出されます。現在のフォーカスがボタン (myButton) である場合、その関数を呼び出したくありません。

JQueryでどうすればできますか?

4

5 に答える 5

1

次の要素がフォーカスされる前に 1 つの要素がぼやけているため、これを確実に行うことはできません。最も近い概算は、ボタンがフォーカスされている場合にクリアするタイムアウトを設定することです。

$(document).ready(function(){
    var timer;

    $('input').blur(function(){
        timer = setTimeout(saveValue, 100);
    });

    $('#myButton').focus(function(){
        clearTimeout(timer);
    });
}); 
于 2011-02-02T22:28:18.077 に答える
0

あなたの質問を正しく理解しているかどうかはわかりません。これが私の試みです:入力テキストのcssクラスを作成し、jqueryを使用してそのように参照します。

コードサンプルは次のとおりです。

<input type="text" id="txtName" class="input-text" />
<input type="submit" value="Submit"/>

<script type="text/javascript">
$(function(){
  $('.input-text').blur(function(){
    var $this = $(this);
    //Call function save value by passing the reference of the current object
    SaveValue($this);
  });
});
</script>
于 2011-02-02T22:37:45.747 に答える
0

何かを見逃したかどうかはわかりませんが、blur イベントを入力フィールドのみにバインドしないのはなぜですか。

$("#yourInputId").live("blur", function()
{
  saveValue();
});
于 2011-02-02T22:27:00.853 に答える
0

あなたは単に試すことができます..

$(':focus').each(function(){    
   if($(this).attr('id') == 'myButton'){
     //do stuff here
   } 
});

jquery フォーラムのこの投稿は、これがほとんどの場合に機能することを示唆しています。

于 2011-02-02T22:27:39.820 に答える
0

あなたが試すことができます:

if(!$('#myButton').is(':focus'))
    ...
于 2011-02-02T22:23:55.147 に答える