javascript - jQuery:处理多个按键监听器?

标签 javascript jquery

我有一个页面需要同时执行两件事:

  • 始终监听来自扫描仪的输入(表现为键盘输入),并注意何时以正确的格式输入字符串。
  • 监听用户是否专注于特定下拉菜单,并输入一组缩写 - 当输入的一组缩写与下拉列表中某个项目的 title 属性相匹配时,将注意力集中在该下拉菜单上.

我可以单独做这两件事,但不能一起做。代码:

// Listen for input when userlist is in focus. 
$("#userlist").keypress(function (e) {
    initials += String.fromCharCode(e.which).toUpperCase();
    $(this).find("option").filter(function () {
        return $(this).attr("title").toUpperCase().indexOf(initials) === 0;
    }).first().attr("selected", true);      
    // uses timer to check for time between keypresses
    return false;
});
// Listen for scanner input all the time. 
var input = '',
    r1 = /^~{1}$/,
    r2 = /^~{1}\d+$/,
    r3 = /^~{1}\d+\.$/,
    r4 = /^~{1}\d+\.\d+$/,
    r5 = /^~{1}\d+\.\d+~{1}$/;
$(window).keypress(function(e) {
    // when input matches final regex, do something  
}    

如果我两者都有,那么当用户专注于下拉列表时,页面不会“听到”来自扫描仪的输入。

如何将两者结合在一起,以确保页面对扫描仪输入使用react,即使用户专注于下拉列表也是如此?

最佳答案

这是因为您使用按键对象上的监听器覆盖了窗口对象上的监听器。我会做这样的事情:

var input = '',
r1 = /^~{1}$/,
r2 = /^~{1}\d+$/,
r3 = /^~{1}\d+\.$/,
r4 = /^~{1}\d+\.\d+$/,
r5 = /^~{1}\d+\.\d+~{1}$/;
function checkRegex(e) { /* Check */ }

// Listen for input when userlist is in focus. 
$("#userlist").keypress(function (e) {
        checkRegex(e);
    initials += String.fromCharCode(e.which).toUpperCase();
    $(this).find("option").filter(function () {
        return $(this).attr("title").toUpperCase().indexOf(initials) === 0;
    }).first().attr("selected", true);      
    // uses timer to check for time between keypresses
    return false;
});
// Listen for scanner input all the time. 
$(window).keypress(function(e) {
    checkRegex(e);
}    

关于javascript - jQuery:处理多个按键监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4783689/

相关文章:

javascript - 如何打开带有数据url图像的新页面?

javascript - Spring:从 JSTL(forEach) 转换为 angular.js(ng-repeat)

JavaScript 模块错误 SyntaxError : Cannot use import statement outside a module

javascript - 动态编写和评估 <script>

javascript - WebSQL :table not creating on changing window. 位置

javascript - 循环表格以设置背景 css

javascript - React组件继承使用父方法和子方法

javascript - 如何使用正则表达式表示字母、数字和字母数字字符

javascript - 选择表单(下拉菜单)上的 Cakephp onChange 事件

php - jquery post与$.ajax,如何避免多次发布?