【问题标题】:jQuery : trouble with Shift+Tab onkeydownjQuery:Shift+Tab onkeydown 的问题
【发布时间】:2012-07-03 19:07:29
【问题描述】:

场景:

我们有 3 个框可以接收任何字母或数字组合作为输入。第一个框最多可以有 3 个字符,第二个框必须正好是 7,最后一个必须是 2。

我试图获得一个 jQuery 函数,以便在用户输入 3 个字符后将用户从第一个框带到第二个框,然后在输入 7 个字符后从第二个框到第三个框,然后从第三个框到第二个框2 个字符后的按钮。我还希望这个函数相当通用,以便我可以从其他控件中使用它,所以我设置了以下内容:

function moveOn(e, objID, nextID, howLong) {
        if (!(e.keyCode == 9)) {
            if ($(objID).val().length >= (howLong)) {
                $(nextID).select();
            }
        }
    }

让我适应的是 Shift+Tab。我试图通过 if(keyCode == 9) 检查来捕捉它,但因为它是 keyup,所以 shift 键可能会在 Tab 之前出现一瞬间,在这种情况下,事件会在 Shift 键 (16) 而不是选项卡 (9)。我不能忽略所有 Shift 捕获,因为用户很可能会在至少一个字段中使用大写字母。

当他们输入第一个值然后意识到他们犯了错误所以他们想返回时,Shift+Tab 就会发挥作用。我们的员工非常依赖键盘,因此他们几乎总是使用 Shift+Tab 来尝试返回并修复该问题。

为了流畅地完成这项工作,我是否缺少一些技巧?

TIA。

【问题讨论】:

  • 仅供参考,你想给focus()
  • 您希望在他们在当前字段中输入正确数量的字符后自动将焦点移至下一个字段。那么 shift 或 tab 是从哪里来的呢?我显然错过了一些东西......
  • 为什么我要使用 focus() 而不是 select()。如果下一个字段中已经有一个值,那么我希望立即选择它,以便他们可以在上面输入。 focus(),imo,总是假设您只打算附加当前存在的值......我发现通常情况并非如此。
  • 添加了一些关于 Shift+Tab 发挥作用的描述
  • 回到 focus() vs select() 部分...我确实添加了一些东西来确定我是要转到文本框还是链接/按钮并适当地处理它。跨度>

标签: jquery


【解决方案1】:

我认为忽略 shift (16) 的键码不会给您带来任何问题。当用户释放 shift 时,它会忽略它。然后它会为他们按下的任何其他键触发一个单独的 onkeydown 事件,无论 shift 是否仍然被按住。你可以在这里测试:http://asquare.net/javascript/tests/KeyCode.html

【讨论】:

  • 试过 ... e.shiftKey 有效,但它并不总是将 keyCode 注册为 9 ...有时它会注册 16(Shift 键),在这种情况下我的 if() 没有捕捉到.
  • 这就是答案。我坚持认为我不能忽略 Shift 键的概念,因为它可能与实际的字母数字键击一起发生,但现实情况是它发生在字母数字键击之外,这意味着我可以忽略它,因为字母数字将触发自己的事件。我挂断了它,因为我的测试与一个简单的警报的方式回来了……因为警报扰乱了流程,我从来没有看到第二次击键……只是换档。谢谢
猜你喜欢
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 2011-07-31
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多