Javascript 当我试图在我的网站上构建键盘快捷键时,为什么jquerykeyup不起作用?

Javascript 当我试图在我的网站上构建键盘快捷键时,为什么jquerykeyup不起作用?,javascript,jquery,accessibility,keyboard-shortcuts,Javascript,Jquery,Accessibility,Keyboard Shortcuts,我正试图在我的网站上建立可访问性的键盘快捷键。例如,当用户按“1”时,我想将他移动到家中。当用户按“2”键时,会转到另一页 我正在尝试使用keyup进行此操作,但它不起作用 $(function() { $(document).keyup(function(e) { if (e.which == 1) { console.log('1'); window.location.href = '/'; } else if (e.which == 2) {

我正试图在我的网站上建立可访问性的键盘快捷键。例如,当用户按“1”时,我想将他移动到家中。当用户按“2”键时,会转到另一页

我正在尝试使用keyup进行此操作,但它不起作用

$(function() {
  $(document).keyup(function(e) {
    if (e.which == 1) {
      console.log('1');
      window.location.href = '/';
    } else if (e.which == 2) {
      window.location.href = '/escolas';
    } else if (e.which == 3) {
      window.location.href = '/noticias';
    } else if (e.which == 4) {
      window.location.href = '/eventos';
    } else if (e.which == 5) {
      window.location.href = '/contato';
    }
  });
});

有人能帮我吗?当我按“1”时,它没有记录1。

这是因为“1”的键代码不是1而是49(对于numpad上的键代码是97)

选中此项查看您的密钥代码:

$(函数(){
$(文档).keyup(函数(e){
$('body').text(e.type+''+e.which);
});
});

您使用了错误的钥匙码。提及

$(函数(){
$(文档).keyup(函数(e){
如果(e.which==49){
console.log('1');
window.location.href='/';
}否则,如果(e.which==50){
window.location.href='/escolas';
}否则如果(e.which==51){
window.location.href='/noticias';
}否则如果(e.which==52){
window.location.href='/eventos';
}否则如果(e.which==53){
window.location.href='/contato';
}
});
});

您可以通过
String.fromCharCode(event.which)获取关键字符,然后直接与实际字符比较:

 $(function() {
      $(document).keyup(function(e) {
        if (e.key) {
           var key = e.key;
         } else { 
           var key  = String.fromCharCode(e.which || e.keyCode);
         }
        if (key == 1) {
          console.log('1');
          window.location.href = '/';
        } else if (key == 2) {
          window.location.href = '/escolas';
        } else if (key == 3) {
          window.location.href = '/noticias';
        } else if (key == 4) {
          window.location.href = '/eventos';
        } else if (key == 5) {
          window.location.href = '/contato';
        }
      });
    });

e。它提供ASCII值。要将ASCII转换为字符,请使用String.fromCharCode(e.which)

$(function () {
    $(document).keyup(function (e) {            
        if (String.fromCharCode(e.which) == 1) {
            window.location.href = '/';
        } else if (String.fromCharCode(e.which) == 2) {
            window.location.href = '/escolas';
        } else if (String.fromCharCode(e.which) == 3) {
            window.location.href = '/noticias';
        } else if (String.fromCharCode(e.which) == 4) {
            window.location.href = '/eventos';
        } else if (String.fromCharCode(e.which) == 5) {
            window.location.href = '/contato';
        }
    });
});
如果你想变得花哨:

$(文档).ready(函数(){
"严格使用",;
常量地址=[
{
代码:[49,97],
路径:'/'
},
{
代码:[50,98],
路径:'/escolas'
},
{
代码:[51,99],
路径:'/noticias'
},
{
代码:[52100],
路径:'/eventos'
},
{
代码:[52101],
路径:'/contato'
}
]
$(文档).on(“键控”,evt=>{
const key=evt.which;
addresses.map(地址=>{
if(address.code.filter(code=>code==key.length)
window.location.href=address.path;
})
});
})

请参考>记住,如果用户使用numpad按下这些数字中的任何一个,这都不起作用。@CristianosAres,谢谢你的提醒,现在它也适用于numpad。