社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Jquery

为什么当我试图在我的网站上建立键盘快捷键时jquery keyup不起作用?

Flávia Nunes • 5 年前 • 1533 次点击  

我正在尝试在我的网站中建立可访问性的键盘快捷键。例如,当用户按“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。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44310
 
1533 次点击  
文章 [ 5 ]  |  最新文章 5 年前
Cristiano Soares
Reply   •   1 楼
Cristiano Soares    6 年前

如果你想去看电影:

$(document).ready(function() {
    'use strict';
  
    const addresses = [
      {
        codes: [49, 97],
        path: '/'
      },
      {
        codes: [50, 98],
        path: '/escolas'
      },
      {
        codes: [51, 99],
        path: '/noticias'
      },
      {
        codes: [52, 100],
        path: '/eventos'
      },
      {
        codes: [52, 101],
        path: '/contato'
      }
    ]
    $(document).on("keyup", evt => {
      const key =  evt.which;
      addresses.map(address => {
        if(address.codes.filter(code => code === key).length)
          window.location.href = address.path;
      })
  });
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
CodingbyRaj
Reply   •   2 楼
CodingbyRaj    6 年前

E.哪个 为您提供ascii值。将ascii转换为字符使用 string.fromCharcode(哪个) .

$(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';
        }
    });
});
ellipsis
Reply   •   3 楼
ellipsis    6 年前

你用错了密码。参考 this

$(function() {
  $(document).keyup(function(e) {
    if (e.which == 49) {
      console.log('1');
      window.location.href = '/';
    } else if (e.which == 50) {
      window.location.href = '/escolas';
    } else if (e.which == 51) {
      window.location.href = '/noticias';
    } else if (e.which == 52) {
      window.location.href = '/eventos';
    } else if (e.which == 53) {
      window.location.href = '/contato';
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Myerffoeg
Reply   •   4 楼
Myerffoeg    6 年前

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

检查此项以查看您的密钥代码:

$(function() {
  $(document).keyup(function(e) {
    $('body').text(e.type + ' ' + e.which);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Gautam Rai
Reply   •   5 楼
Gautam Rai    6 年前

你可以通过 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';
        }
      });
    });