输入表单上的密钥覆盖

时间:2012-03-09 12:06:09

标签: javascript forms tabs enter

我必须支持一个数据输入表单,由很久以前的人编写,使用Javascript使Enter键的行为类似于Tab键,以便输入数据的人可以非常快速地键入 - , - 等。它是以这种方式设置的,因为他们必须为一个月的每一天输入3个数字,每个表单提交一个月,并且他们通常会等到他们有一整个月的数据才能完成。

这是覆盖Enter键的JS函数:

function handleEnter(field, event) {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
    var i;
    for (i = 0; i < field.form.elements.length; i++)
        if (field == field.form.elements[i])
            break;
    i = (i + 1) % field.form.elements.length;
    field.form.elements[i].focus();
    return false;
} else {
    return true;
}    

}

对于每个人,在我测试的每个浏览器中,这实际上都很好,除了一个客户,每个月必须输入多个位置的数据。上周,Enter键在此表单上完全停止了她的工作。更重要的是,现在她甚至无法点击每天的第三列,或者进入每个月排的最后一天。我在屏幕共享上看过这个问题,但我无法控制她的电脑或远程调试JS。 (Tab键确实移动了光标,但移动到了随机字段 - 即使所有tabindex值都设置正确。)

我无法在任何计算机上重新创建此问题。她说她已经使用相同的设置(Win XP / IE 8)六个月,问题刚刚开始。我尝试过各种浏览器/操作系统组合,包括两台运行IE 8的Win XP机器。(一个奇怪的旁注:她说她在表格上使用iPad时也无法点击第三个字段,但当然,我的iPad可以正常使用。)

我在StackOverflow上看到了这个似乎相关的问题,除了我没有尝试更改键击,只是拦截它,阻止默认行为,并做一些其他行为: How do I convert Enter to Tab (with focus change) in IE9? It worked in IE8

我想也许她的计算机上有一些恶意软件/键盘记录程序导致了这个问题,但iPad的问题让人质疑。她的路由器中是否有恶意软件?我必须再次为她工作,但我不能重新创建这个问题来调试它。

有没有人见过这样的事情?

0 个答案:

没有答案