0

ここにこのコードがありますが、入力をクリックした後、フォーカスがない場合でもアラートが表示されます。可能であれば、クリック機能も削除して、入力にフォーカスがある場合にのみアラートを出すようにしたいと思います。

$('#inputSize').click(function(){
    if ($('#inputSize').is(':focus')){
        $(document).keydown(function(e){
            if (e.keyCode == 38) { 
               alert( "up pressed" );
               return false;
            }
                if (e.keyCode == 40) { 
               alert( "down pressed" );
               return false;
            }
        });
    }
});

ありがとう!

4

4 に答える 4

2

keydown入力のイベントにバインドするだけです。暗示されているため、フォーカスを確認する必要はありません。

$('#inputSize').keydown(function(e) {    
    if (e.keyCode == 38) 
    { 
       alert( "up pressed" );
       return false;
    }

    if (e.keyCode == 40) 
    { 
       alert( "down pressed" );
       return false;
    }
});
于 2013-02-14T15:39:20.503 に答える
1

フォーカス専用のハンドラーがあります。

$('#inputSize').focus(function () {});

これは、指定された ID の入力にフォーカスがあるときに渡された関数を呼び出します。

于 2013-02-14T15:36:50.183 に答える
0

以下のようにdocument.activeElementを使用して、フォーカスされた要素であるかどうかをテストできます。

  if($('#inputSize') == document.activeElement) {
      // #inputsize is focused
    }

ほとんどの場合、アクションは別の要素でトリガーされることに注意してください。たとえば、ボタンをクリックすると、フォーカスがあり、アクティブな要素になります。そのため、要素はすでに存在するため、ボタンチェックでこれをチェックすることはできません。ほとんどの場合、イベントが発生するまでに変更されます。

だから、あなたは次のようになるかもしれません

$('#inputSize').click(function(){

      if($('#inputSize') == document.activeElement){
        $(document).keydown(function(e){
            if (e.keyCode == 38) { 
               alert( "up pressed" );
               return false;
            }
                if (e.keyCode == 40) { 
               alert( "down pressed" );
               return false;
            }
        });
    }
});
于 2013-02-14T15:42:56.540 に答える
0
$('#inputSize').keydown(function(e) {
    if (e.keyCode == 38) 
    { 
       alert( "up pressed" );
       return false;
    }
    if (e.keyCode == 40) 
    { 
       alert( "down pressed" );
       return false;
    }
});
于 2013-02-14T16:00:43.190 に答える