Javascript 指定“/&引用;在搜索框中创建焦点用户的热键
我正在建立的网站顶部有一个搜索栏。与Trello或Gmail类似,我希望用户按下“/”键时,他们的注意力会转移到搜索框 我的javascript如下所示:Javascript 指定“/&引用;在搜索框中创建焦点用户的热键,javascript,jquery,html,Javascript,Jquery,Html,我正在建立的网站顶部有一个搜索栏。与Trello或Gmail类似,我希望用户按下“/”键时,他们的注意力会转移到搜索框 我的javascript如下所示: document.onkeydown = checkShortcuts; function checkShortcuts(event) { console.log(event.keyCode); if (event.keyCode == 191) { // 191 == "/" key var text_in
document.onkeydown = checkShortcuts;
function checkShortcuts(event) {
console.log(event.keyCode);
if (event.keyCode == 191) { // 191 == "/" key
var text_input = document.getElementById ('sitesearch');
text_input.focus ();
text_input.select ();
$('#sitesearch').val("");
}
}
我遇到的问题是,在按下/键时,焦点不仅放在搜索栏上,而且“/”字符也显示在搜索栏上。我试图通过执行jquery.val(“”)来删除它,但这是在键入信件之前进行的
如果我将onkeydown移动到onkeydup,那么当我键入“/”时,我会在firefox中获得快速查找窗口,这也不是我想要的
您知道如何设置焦点,但不在文本字段中键入该字符吗?另一种方法是使用
setTimeout
函数
另一种选择是重复使用false,如@Goose所述:
如果你已经混合了JS/jQuery,你可以把它缩短
$(document).keydown(function() {
if(event.keyCode == 191) {
$('#sitesearch').focus();
return false;
}
});
尝试按onkeypress而不是onkeydown。如果它们已经在字段中,则添加
返回false代码>使其不被插入。似乎是一种创可贴解决方案。像这样使用setTimeout不是很好的做法。
document.onkeydown = checkShortcuts;
function checkShortcuts(event) {
if (event.keyCode == 191) { // 191 == "/" key
var text_input = document.getElementById ('sitesearch');
text_input.focus ();
text_input.select ();
return false;
}
}
$(document).keydown(function() {
if(event.keyCode == 191) {
$('#sitesearch').focus();
return false;
}
});