仅在_some字段上通过Enter键禁用表单提交

jus*_*eve 72 jquery webforms

因为用户熟悉,我想保留传统的'表单提交时按Enter键'行为.但是通过反射,当他们用文本输入框完成时,他们经常会输入 - 但是在他们实际完成整个表格之前.

我只想在关注某一类输入时劫持Enter键.

寻找 相关问题这看起来像我正在寻找的:

if (document.addEventListener) {
    document.getElementById('strip').addEventListener('keypress',HandleKeyPress,false);
} else {
    document.getElementById('strip').onkeypress = HandleKeyPress;
}
Run Code Online (Sandbox Code Playgroud)

但这if (document.addEventListener) {部分对我来说并不熟悉.

Nic*_*ver 134

您可以keypress在这些字段上捕获并取消输入,如下所示:

$('.noEnterSubmit').keypress(function(e){
    if ( e.which == 13 ) return false;
    //or...
    if ( e.which == 13 ) e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

然后在你的输入上给他们一个class="noEnterSubmit":)

展望未来以防其他人在以后发现这个问题,在jQuery 1.4.3中(尚未发布)你可以将它缩短到这个:

$('.noEnterSubmit').bind('keypress', false);
Run Code Online (Sandbox Code Playgroud)

  • 你还需要记住`bind('keypress',false);`将_prohibit所有数据entry_.因此,如果要将其应用于文本输入元素,请使用第一个解决方案 (49认同)
  • 如果您正在使用动态字段,则应将其更改为`$('body').on('keypress','.noEnterSubmit',function(){...});` (4认同)
  • 使用类不适合语义控制.更好地使用data-nosubmit或类似的HTML 5数据属性.然后$('[data-nosubmit]')是选择器. (3认同)
  • @JoergKrause这完全是主观的 - 我们使用js-className并且它工作得很好,这取决于开发人员.类名在旧版浏览器中也可以工作(并且工作得很快 - 原生选择器引擎)并且html4有效(不是数据属性*实际上*破坏html4). (3认同)

sta*_*ser 15

 <input type="text"  onkeydown="return (event.keyCode!=13);" />
Run Code Online (Sandbox Code Playgroud)