Javascript 如何在if结构中测试输入是否具有焦点?
我这里有这个代码,但是当你点击输入后,当它没有焦点时,警报仍然会出现。如果可能的话,我想取消点击功能,这样它只会在输入有焦点时发出警报Javascript 如何在if结构中测试输入是否具有焦点?,javascript,jquery,Javascript,Jquery,我这里有这个代码,但是当你点击输入后,当它没有焦点时,警报仍然会出现。如果可能的话,我想取消点击功能,这样它只会在输入有焦点时发出警报 $('#inputSize').click(function(){ if ($('#inputSize').is(':focus')){ $(document).keydown(function(e){ if (e.keyCode == 38) { alert( "up presse
$('#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;
}
});
}
});
谢谢 有一个专门针对焦点的处理程序:
$('#inputSize').focus(function () {});
当具有给定ID的输入具有焦点时,这将调用传递的函数。有一个专门用于焦点的处理程序:
$('#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;
}
});
}
});
$('#inputSize').focus(function () {});
当具有给定ID的输入具有焦点时,这将调用传递的函数。只需绑定到输入上的
keydown
事件。无需检查焦点,因为这意味着:
$('#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;
}
});
}
});
$('#inputSize').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;
}
});
您可以使用以下方法测试它是否是聚焦元素:
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;
}
});
}
});
您可以使用以下方法测试它是否是聚焦元素:
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焦点,但单击了其他位置后,仍会触发此操作。是否删除了单击处理程序?也许我误解了你想做什么?当你说“这仍然燃烧”时,你是什么意思?当输入获得焦点时,您希望发生一些事情,对吗?如果有焦点,他们按下键盘上的上/下键,我希望出现相应的警报。哦,我明白了,我会尝试修改我的答案以满足您的要求。出于某种原因,在您给出#inputSize焦点后,仍然会触发此警报,但随后单击了其他位置。是否删除了单击处理程序?也许我误解了你想做什么?当你说“这仍然燃烧”时,你是什么意思?当输入获得焦点时,你希望发生什么事情,对吗?如果有焦点,他们按下键盘上的上/下键,我希望相应的警报出现。哦,我明白了,我会尝试修改我的答案,以满足你的需要,它会发生。我正在演示
is(':focus')
的用法。这很奇怪吗?在文档
上绑定keydown事件,然后不执行任何操作,除非#inputSize
具有焦点。正确的方法是将keydown事件绑定到#inputSize
元素,而不是文档!的确是这样,但“我们不需要解释原因”…;)@阿迪内奥,你说得对。回答吧,但我想现在已经太晚了……:)@阿迪内奥,如果你能让我看看你在说什么,那就太好了。是的,的确如此。我正在演示is(':focus')
的用法。这很奇怪吗?在文档
上绑定keydown事件,然后不执行任何操作,除非#inputSize
具有焦点。正确的方法是将keydown事件绑定到#inputSize
元素,而不是文档!的确是这样,但“我们不需要解释原因”…;)@阿迪内奥,你说得对。回答吧,但我想现在已经太晚了……:)@adeneo,如果你能告诉我你在说什么,那就太好了。你在click函数中绑定了一个keydown事件,这会多次重新绑定keydown事件,导致问题。您到底想做什么,因为可能不是这样做的。您在单击函数中绑定了一个keydown事件,这将多次重新绑定keydown事件,从而导致问题。你到底想做什么,因为这可能不是你要做的方式。