【问题标题】:Possible to Prevent Enter From Submitting a Form in Javascript From Certain Input Fields Only [duplicate]可以防止 Enter 仅从某些输入字段以 Javascript 提交表单 [重复]
【发布时间】:2011-01-03 12:29:09
【问题描述】:

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

控件永远不会进入我的 javascript 建议函数。相反,表单只是提交。我已经尝试过 noEnter 函数,这些函数在输入时返回 false 传递给有问题的输入元素的 onkeypress 和 onkeydown,没有骰子。该表单似乎从所有输入事件处理程序中获取控制权并在它们中的任何一个可以做任何事情之前提交自己。

表单提交是否会覆盖字段中的所有其他事件处理程序,或者这里还有其他事情发生吗?如果是这样,有什么办法可以解决吗?

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

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

这是捕捉它的 javascript:

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

    var key = evnt.keyCode;

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

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

几乎同一主题还有其他问题,比如这个:Prevent Users from submitting form by hitting enter #2

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

已编辑:解释密钥的设置位置。

【问题讨论】:

  • 您的代码中的“键”是什么?我正在尝试了解您的其余功能 - 也许尝试执行 alert(key) 并查看该功能是否实际被调用以及“key”的值是什么
  • 尝试过警报,该函数根本没有被调用——更不用说键了。

标签: javascript html forms javascript-events


【解决方案1】:

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

所以在 onkeypress 事件中:

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

然后是JS:

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

【讨论】:

  • 不错!做到了,谢谢!
  • 为我工作,虽然我似乎也需要在表单标签中使用 onsubmit="return false"。
  • @HighlyIrregular 这个答案对我也不起作用,但是您的建议为我禁用了整个表单的 any 类型的提交(甚至用鼠标单击提交按钮)。
  • @starsplusplus 您是否也将其应用于提交按钮?如果没有,我认为提交按钮应该仍然有效。
  • @HighlyIrregular 不具体,但我认为将其应用于整个表单会将其应用于提交按钮......至少对我来说似乎是这样。
猜你喜欢
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 2010-10-28
相关资源
最近更新 更多