Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 指定“/&引用;在搜索框中创建焦点用户的热键_Javascript_Jquery_Html - Fatal编程技术网

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

我正在建立的网站顶部有一个搜索栏。与Trello或Gmail类似,我希望用户按下“/”键时,他们的注意力会转移到搜索框

我的javascript如下所示:

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;
  }
});