HTML文本输入:避免按下回车键时提交

31
我有一个HTML输入框,它是一个文本字段。当我按下回车键时,这将调用提交操作,这是正常的。
现在,当在文本框中按下Enter键时,我想做一些其他的事情。
我正在尝试像这样做:
<input type="text" 
       id="first_page"  
       onPaste="" 
       onkeydown="if (event.keyCode == 13) alert('enter')" />

警告弹出框可以正常工作,但提交仍在进行。提交后我的页面会重新加载。

请帮助我解决这个问题。


您不需要使用'onPaste'参数。 - Knase
9个回答

27

使用jQuery:

<script>
  $('#first_page').keypress(function(e) {
    if (e.keyCode == '13') {
      e.preventDefault();
      //your code here
    }
  });​
</script>

使用JavaScript

<input type="text" id="first_page" onPaste="" onkeydown="if (event.keyCode == 13) { alert('enter');return false;}" />

4
问题中没有提到jQuery。 - James Allardice
1
可以使用简写形式: onkeydown="event.keyCode == 13 && event.preventDefault()" - lemonskunnk

26

编写 return false; 并进行检查


10
现在已将此标记为过时。应使用 event.preventDefault() 和/或 event.stopPropagation()。 - thsorens

7

另一个选择是使用onkeypress

<input type="text" id="first_page"  onPaste="" onkeypress="if (event.keyCode == 13) {alert('enter'); return false;}" />

1
在if语句中,你需要加上{},否则无论按下哪个键都会返回false。 - Phil Sattele

2
您可以尝试以下脚本:

您可以尝试以下脚本:

<script>
  function checkEnter(event)
  {
    if (event.keyCode == 13) 
    {
      alert('enter')
      return false;
    }
  }
</script>

并且HTML:

<input type="text" id="first_page" onPaste="" onkeydown="return checkEnter(event);" />

1

1

alert('enter')后面写入以下代码

return false;

1

我使用这个方法,它在我的电脑上有效。

在按键按下事件中进行替换:

onkeydown="if (event.keyCode == 13 || event.which == 13) event.preventDefault();"

谢谢 @Michelle,我还是Stack Overflow的新手。 - Abdul Afiq

-1
 $(function () {$('#form').validationEngine(); });

它将在我的MVC问题中起作用


-3

使用 jQuery 可以避免提交所有或某些元素

$("#form").submit(function(e) {
    e.preventDefault();
});

这将完全阻止表单被提交,我怀疑这不是OP的意图。 - tbm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接