首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jquery禁止在回车时提交表单

jquery禁止在回车时提交表单
EN

Stack Overflow用户
提问于 2012-06-28 06:23:02
回答 15查看 338.7K关注 0票数 224

我的页面中有以下javascript,它似乎不起作用。

代码语言:javascript
复制
$('form').bind("keypress", function(e) {
  if (e.keyCode == 13) {               
    e.preventDefault();
    return false;
  }
});

我希望禁止在enter时提交表单,或者更好的做法是,将我的ajax表单称为submit。这两种解决方案都是可以接受的,但是我在上面包含的代码并不会阻止表单的提交。

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2012-06-28 06:28:51

如果未捕获keyCode,则捕获which

代码语言:javascript
复制
$('#formid').on('keyup keypress', function(e) {
  var keyCode = e.keyCode || e.which;
  if (keyCode === 13) { 
    e.preventDefault();
    return false;
  }
});

编辑:错过了,最好用keyup而不是keypress

编辑2:在Firefox的一些新版本中,表单提交不会被阻止,因此在表单中添加按键事件也会更安全。它也不能工作了(再也不能工作了?)只需将事件绑定到表单"name“,但仅绑定到表单id。因此,我通过适当地更改代码示例使这一点变得更加明显。

编辑3:将bind()更改为on()

票数 460
EN

Stack Overflow用户

发布于 2012-12-08 04:41:17

甚至更短:

代码语言:javascript
复制
$('myform').submit(function() {
  return false;
});
票数 43
EN

Stack Overflow用户

发布于 2014-05-30 20:32:33

代码语言:javascript
复制
$(document).on('keyup keypress', 'form input[type="text"]', function(e) {
  if(e.which == 13) {
    e.preventDefault();
    return false;
  }
});

此解决方案适用于网站上的所有表单(也适用于使用ajax插入的表单),防止仅在输入文本中输入。把它放在一个文档就绪的函数中,然后永远忘记这个问题。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11235622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档