可能通过JavaScript仅从特定输入字段中防止Enter提交表单

13 浏览
0 Comments

可能通过JavaScript仅从特定输入字段中防止Enter提交表单

这个问题已经有答案了:

如何防止用户通过回车键提交表单

我有一个表单,当用户在某些字段中进行输入时,会通过onkeyup触发创建建议框的动作。我能够捕获向上箭头、向下箭头和ESC键的按键事件,并按照需求在建议框中进行操作或关闭它。我想要使用回车键将他们的选择移动到触发建议的输入字段中。然而,我似乎无法捕获回车键的按键事件。

控制流从未进入我的JavaScript建议函数。而表单则会直接提交。我在这个有问题的输入元素上尝试了传递noEnter函数到onkeypressonkeydown內,以防止在按下回车键时发生,但结果不行。这个表单似乎掌控所有输入事件处理程序的控制权,并在它们做任何事情之前提交自己。

表单提交会覆盖字段中的所有其他事件处理程序吗?还是这里还有其他问题?如果是这样,是否有其他方法绕过这个问题?

这是有问题的输入元素(已省略一些值):


这是用来捕获它的javascript代码:

    var evnt = (event ? event : window.event);
    var key = evnt.keyCode;
    if(key == 13) { // Handle Enter
        alert("ENTER PRESSED.");
        hideSuggestions();
        return false;
    }

弹出警告从来没有触发过。将警告标记放在函数顶部也没有任何反应。但是对于ESC键,当我在一个检查key参数是否为27的if语句中放置完全相同的代码时,警告标记就会被触发。

还有其他几乎相同主题的问题,例如:防止用户通过回车键提交表单#2

然而,我不使用 jQuery ,而且我只想阻止此字段的回车键提交。但是,各种问题中提到的其他解决方案似乎都不起作用。

编辑:解释 key 是如何设置的。

admin 更改状态以发布 2023年5月22日
0
0 Comments

尝试将输入框的onkeyup事件更改为返回函数结果

所以在onkeypress事件中:


然后是JS代码:

function dontSubmit (event)
{
   if (event.keyCode == 13) {
      return false;
   }
}

0