使用jQuery提交“input”表单?

我有一个使用HTML / jQuery的AIR项目的bog标准login表单 – 一个电子邮件文本字段,一个密码字段和一个提交button。 当我在表单上按Enter键时,整个表单的内容就会消失,但表单不会被提交。 有谁知道这是否是一个Webkit的问题(Adobe AIR使用Webkit的HTML),或者如果我已经堵塞了事情?

我试过了:

$('.input').keypress(function (e) { if (e.which == 13) { $('form#login').submit(); } }); 

但是,这既不能阻止清算行为,也不能提交表格。 没有与表格相关的行动 – 这可能是问题吗? 我可以把一个JavaScript函数的行动?

 $('.input').keypress(function (e) { if (e.which == 13) { $('form#login').submit(); return false; //<---- Add this line } }); 

注意:你已经接受了bendewey的回答,但是对e.preventDefault()的描述是错误的。 看看这个stackoverflow的答案: event.preventDefault()与返回false

基本上,“return false”和调用e.preventDefaulte.stopPropagation()

除了像贾森·科恩(Jason Cohen)提到的那样返回假。 您可能还必须防止默认

 e.preventDefault(); 

不知道这是否有帮助,但你可以尝试模拟提交button点击,而不是直接提交表单。 我在生产中有以下代码,它工作正常:

  $('.input').keypress(function(e) { if(e.which == 13) { jQuery(this).blur(); jQuery('#submit').focus().click(); } }); 

注意: jQuery('#submit')。focus()使button在按下input时有animation效果。

返回false以防止键击继续。

是否有任何理由你必须钩住和testing回车键?

你不能简单地添加一个

 <input type="submit" /> 

你的forms,并自然被提交input时被推? 你甚至可以钩表单的onsubmit行动,并从那里调用validationfunction,如果你想…

您甚至可以使用onsubmit作为testing来查看您的表单是否被提交,但是如果您调用form.submit() ,它将不起作用。

这里有一个方法来做到这一点作为一个JQuery插件(如果你想重新使用的function):

 $.fn.onEnterKey = function( closure ) { $(this).keypress( function( event ) { var code = event.keyCode ? event.keyCode : event.which; if (code == 13) { closure(); return false; } } ); } 

现在,如果你想用这种types的function来装饰它,就像这样简单:

 $('#your-input-id').onEnterKey( function() { // Do stuff here } ); 

您也可以简单地将onsubmit="return false"添加到页面中的表单代码中,以防止默认行为。

然后在JavaScript文件中将表单的submit事件挂接( .bind.live )到jQuery的任何函数中。

这里有一个示例代码来帮助:

HTML

 <form id="search_form" onsubmit="return false"> <input type="text" id="search_field"/> <input type="button" id="search_btn" value="SEARCH"/> </form> 

Javascript + jQuery

 $(document).ready(function() { $('#search_form').live("submit", function() { any_function() }); }); 

这是2011-04-13,Firefox 4.0和jQuery 1.4.3

为了保持可访问性,您应该使用这个来确定您的键码:

 c = e.which ? e.which : e.keyCode; if (c == 13) ... 

这是我的代码:

  $("#txtMessage").on( "keypress", function(event) { if (event.which == 13 && !event.shiftKey) { event.preventDefault(); $("#frSendMessage").submit(); } }); 

我现在用

 $("form").submit(function(event) 

起初,我添加了一个事件处理程序提交button,为我产生了一个错误。

只需添加便于实施。 你可以简单地做一个表单,然后隐藏提交button:

例如:

 <form action="submit.php" method="post"> Name : <input type="text" name="test"> <input type="submit" style="display: none;"> </form> 

在HTML代码中:

 <form action="POST" onsubmit="ajax_submit();return false;"> <b>First Name:</b> <input type="text" name="firstname" id="firstname"> <br> <b>Last Name:</b> <input type="text" name="lastname" id="lastname"> <br> <input type="submit" name="send" onclick="ajax_submit();"> </form> 

在Js代码中:

 function ajax_submit() { $.ajax({ url: "submit.php", type: "POST", data: { firstname: $("#firstname").val(), lastname: $("#lastname").val() }, dataType: "JSON", success: function (jsonStr) { // another codes when result is success } }); } 

//尝试下面的代码 //希望可以帮忙

  var form = document.formname; if($(form).length > 0) { $(form).keypress(function (e){ code = e.keyCode ? e.keyCode : e.which; if(code.toString() == 13) { formsubmit(); } }) }