jQuery:使用Shift + Tab onkeydown时出现问题

时间:2012-07-03 19:07:30

标签: jquery

情景:

我们有3个盒子可以接收任何字母或数字组合作为输入。第一个框最多可包含3个字符,第二个框必须精确为7,最后一个框必须为2。

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

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

导致我适合的是Shift + Tab。我试图通过if(keyCode == 9)检查但是因为它是keyup,移位键可以在Tab之前一瞬间出现,在这种情况下,事件触发Shift键(16)而不是标签(9)。我不能忽略所有Shift捕获,因为用户很可能在至少一个字段中使用大写字母。

当他们键入第一个值然后意识到他们犯了错误以便他们想要回去时,Shift + Tab正在发挥作用。我们的员工非常受键盘驱动,因此他们几乎总是会使用Shift + Tab来尝试返回并修复它。

我是否因为让这项工作流畅而缺少一些技巧?

TIA。

1 个答案:

答案 0 :(得分:1)

我认为忽略shift(16)的关键代码会导致任何问题。当用户释放shift时,它会忽略它。然后它会针对他们按下的任何其他按键发出单独的onkeydown事件,无论是否仍然保持按下。您可以在此处进行测试:http://asquare.net/javascript/tests/KeyCode.html