[英]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.