繁体   English   中英

我如何测试输入是否集中在if结构中?

[英]How can I test whether input has focus in an if structure?

我现在已经在这里获得了此代码,但是当您单击输入时,如果没有焦点,警报仍然会出现。 如果可能的话,我也想摆脱单击功能,以便它仅在输入具有焦点时发出警报。

$('#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;
            }
        });
    }
});

谢谢!

只需绑定到输入上的keydown事件即可。 由于隐含了以下内容,因此无需检查焦点:

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

    if (e.keyCode == 40) 
    { 
       alert( "down pressed" );
       return false;
    }
});

有一个专门针对焦点的处理程序:

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

当具有给定ID的输入具有焦点时,这将调用传递的函数。

您可以使用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;
            }
        });
    }
});
$('#inputSize').keydown(function(e) {
    if (e.keyCode == 38) 
    { 
       alert( "up pressed" );
       return false;
    }
    if (e.keyCode == 40) 
    { 
       alert( "down pressed" );
       return false;
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM