我正在构建一个Web应用程序,我需要解决这个问题。
对于这个项目,我需要使用keyup函数。它本身并不困难:
if (e.keyCode == 40) { //Up arrow key
moveListUp();
} else if(e.keyCode == 38){ //Down arrow key
moveListDown();
} else{
$('.searchBox').focus();
}
如您所见,如果按下箭头键,则需要执行一项功能。但是当按下任何其他键时,它会在searchBox上执行焦点功能。
我不希望除左右箭头键之外的每个键都能触发焦点功能。我只想要数字和字母键来触发该功能。
如何在不必为每个键定义if语句的情况下实现此目的?
答案 0 :(得分:1)
你可以像这样的正则表达式检查你的密钥:
$(window).on('keydown', function(e){
var key_char = String.fromCharCode(e.keyCode),
regex = /[a-zA-Z0-9]/;
if (e.keyCode == 40) { //Up arrow key
moveListUp();
} else if(e.keyCode == 38){ //Down arrow key
moveListDown();
} else if( regex.test(key_char)){ // matches only alphanumeric keys
$('.searchBox').focus();
}
});
答案 1 :(得分:0)
如果我理解正确,您需要在调用focus()
之前检查密钥是否为字母数字,在这种情况下,您可以检查代码是否在正确范围之一。
else if ((e.keyCode >= 65 && e.keyCode <= 90) || (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 97 && e.keyCode <= 122))
{
$('.searchBox').focus();
}
那是else if ((uppercaseLetter) || (Number) || (lowercaseLetter))
答案 2 :(得分:0)
在最后的其他情况下使用return false:
if (e.keyCode == 40) { //Up arrow key
moveListUp();
} else if(e.keyCode == 38){ //Down arrow key
moveListDown();
} else if(e.keyCode > 46 || e.keyCode < 91){
$('.searchBox').focus();
} else{
return false;
}