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

我想保留传统的'表单提交时,我按下回车'行为,因为用户熟悉。 但是通过reflection,当他们完成一个文本input框的时候,他们经常会进入input框 – 但是在他们完成了整个表单之前。

只有当焦点位于特定类别的input上时,才想要劫持Enter键。

看相关问题这看起来像我在找什么:

if (document.addEventListener) { document.getElementById('strip').addEventListener('keypress',HandleKeyPress,false); } else { document.getElementById('strip').onkeypress = HandleKeyPress; } 

if (document.addEventListener) {部分是我不熟悉的。

您可以捕获和取消这些字段上的inputkeypress

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

然后在你的input只是给他们一个class="noEnterSubmit" 🙂

outlook未来,如果其他人发现这一点,在jQuery 1.4.3 (还没有出来),你可以缩短到这个:

 $('.noEnterSubmit').bind('keypress', false); 

只需在您的HTML代码的<Head>标记中添加以下代码。 它将在input密钥上的表单提交表单上的所有字段

 <script type="text/javascript"> function stopEnterKey(evt) { var evt = (evt) ? evt : ((event) ? event : null); var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); if ((evt.keyCode == 13) && (node.type == "text")) { return false; } } document.onkeypress = stopEnterKey; </script> 

只允许input特定的类(在本例中为“enterSubmit”):

 jQuery(document).ready(function(){ jQuery('input').keypress(function(event){ var enterOkClass = jQuery(this).attr('class'); if (event.which == 13 && enterOkClass != 'enterSubmit') { event.preventDefault(); return false; } }); });