jquery 禁用表单在输入时提交

2022-08-30 00:55:49

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

$('form').bind("keypress", function(e) {
  if (e.keyCode == 13) {               
    e.preventDefault();
    return false;
  }
});

我想禁止在输入时提交表单,或者更好的是,将我的ajax表单提交。任何一种解决方案都是可以接受的,但我上面包含的代码不会阻止表单提交。


答案 1

如果未捕获,则捕获:keyCodewhich

$('#formid').on('keyup keypress', function(e) {
  var keyCode = e.keyCode || e.which;
  if (keyCode === 13) { 
    e.preventDefault();
    return false;
  }
});

编辑:错过了,最好使用而不是keyupkeypress

编辑2:与一些较新版本的Firefox一样,表单提交不会被阻止,因此将按键事件添加到表单中也更安全。此外,它不起作用(不再?)只是将事件绑定到表单“name”,而只绑定到表单id。因此,我通过适当地更改代码示例使这一点更加明显。

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


答案 2

通常,当您专注于输入元素时,会提交表单。Enter

我们可以在表单中的输入元素上禁用键(代码):Enter13

$('form input').on('keypress', function(e) {
    return e.which !== 13;
});

演示:http://jsfiddle.net/bnx96/325/