可以阻止Enter从仅从某些输入字段在Javascript中提交表单

Dan*_*ham 3 html javascript forms javascript-events

我有一个表单,其中onkeyup触发为某些字段创建建议框.我可以捕获向上箭头,向下箭头和转义的击键,并相应地使用它们在建议框中移动或关闭它.我想使用enter将他们的选择移动到触发建议的输入字段.但是,我似乎无法捕获输入击键.

控件永远不会进入我的javascript建议功能.相反,表格只是提交.我已经尝试了在输入时返回false的noEnter函数传递给onkeypress和onkeydown用于有问题的输入元素,没有骰子.该表单似乎从所有输入事件处理程序中获取控制权,并在其中任何一个可以执行任何操作之前提交自身.

表单提交是否覆盖字段中的所有其他事件处理程序,或者此处还有其他内容吗?如果确实如此,那有什么办法吗?

这是有问题的元素(删除了一些值):

<input type="text" name="myInput" id="myInputField" size="22" onkeypress="noEnter(event)" onkeyup="suggest(event)" onblur="hideSuggestions()">
Run Code Online (Sandbox Code Playgroud)

这是javascript来捕捉它:

    var evnt = (event ? event : window.event);

    var key = evnt.keyCode;

    if(key == 13) { // Handle Enter
        alert("ENTER PRESSED.");
        hideSuggestions();
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

警报永远不会触发.放在函数顶部的警报也不会触发.但是,对于转义键,当我将完全相同的代码放入if检查key == 27警报时.

关于几乎相同的主题还有其他问题,例如:阻止用户通过输入#2来提交表单

但是,我没有使用jquery,我只想阻止enter提交这个字段.但是,各种问题中提到的其他解决方案似乎都不起作用.

EDITTED:解释密钥的设置位置.

jed*_*i58 11

尝试更改输入上的onkeyup事件以返回功能结果

所以在onkeypress事件中:

<input type="text" name="myInput" id="myInputField" size="22" onkeypress="return dontSubmit(event);" />
Run Code Online (Sandbox Code Playgroud)

然后是JS:

function dontSubmit (event)
{
   if (event.keyCode == 13) {
      return false;
   }
}
Run Code Online (Sandbox Code Playgroud)