箭头键在表单上不起作用

Arrow Keys Not Working on Form

我们在特定站点上使用 Ninja Forms,每当我们在上面键入内容时,箭头键就不起作用。我做了一项研究,发现向这个社区提供了类似的东西 (here)。

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

    // disable/enable scroll (mousewheel and keys) from                   
    // 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;
            }
        }
    }

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

感谢社区的指导。谢谢

我可能应该为实际表格提供一个 link。 Here you go.

您可以使用 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;
        }
    }
}