箭头键不在表单上工作

时间:2016-12-25 05:13:03

标签: javascript jquery forms arrow-keys

我们在特定网站上使用Ninja Forms,每当我们在其上键入内容时,箭头键就不起作用了。我做了一项研究,发现了一些与此社区相似的内容(here)。

所以我确实检查了网站的JS文件,并确切地找到了所提到的内容。我注意到这组代码,我认为这些代码负责禁用箭头键:

    // disable/enable scroll (mousewheel and keys) from https://stackoverflow.com/a/4770179                  
    // left: 37, up: 38, right: 39, down: 40,
    // spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36
    var keys = [37, 38, 39, 40], wheelIter = 0;

    function preventDefault(e) {
        e = e || window.event;
        if (e.preventDefault)
        e.preventDefault();
        e.returnValue = false;  
    }

    function keydown(e) {
        for (var i = keys.length; i--;) {
            if (e.keyCode === keys[i]) {
                preventDefault(e);
                return;
            }
        }
    }

但我不确定接下来要做什么,因为我最初提到的那个资源并没有说明一步一步的程序。我应该删除整套代码吗?我绝对可以做一个测试,但我想我可能会认为它确实有效,但实际上我可能没有注意到其他一些变化。

欢迎来自社区的指导。感谢。

我可能应该提供实际表格的链接。 Here you go

1 个答案:

答案 0 :(得分:0)

您可以使用jQuery检查目标是否是表单元素(因为您正在使用它),如果是这样,则不要调用阻止默认行为的讨厌代码。

function keydown(e) {
    // Don't block arrow keys on form elements
    if( $(e.target).is(':input') ) {
        return;
    }
    for (var i = keys.length; i--;) {
        if (e.keyCode === keys[i]) {
            preventDefault(e);
            return;
        }
    }
}