我现在已经有了这个代码,但是当你没有焦点时点击输入后警报仍然会出现。如果可能的话,我也想摆脱点击功能,这样它只会在输入有焦点时发出警告。
$('#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;
}
});
}
});
谢谢!
答案 0 :(得分:2)
只需绑定输入上的keydown
事件即可。没有必要检查焦点,因为它隐含着:
$('#inputSize').keydown(function(e) {
if (e.keyCode == 38)
{
alert( "up pressed" );
return false;
}
if (e.keyCode == 40)
{
alert( "down pressed" );
return false;
}
});
答案 1 :(得分:1)
有一个专门用于焦点的处理程序:
$('#inputSize').focus(function () {});
当具有给定ID的输入具有焦点时,这将调用传递的函数。
答案 2 :(得分: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;
}
});
}
});
答案 3 :(得分:0)
$('#inputSize').keydown(function(e) {
if (e.keyCode == 38)
{
alert( "up pressed" );
return false;
}
if (e.keyCode == 40)
{
alert( "down pressed" );
return false;
}
});