【问题标题】:submit form with enter key that has button in it使用带有按钮的输入键提交表单
【发布时间】:2013-08-21 10:23:38
【问题描述】:

我需要使用回车键提交表单,但就我而言,这与本网站中的其他问题不同。我没有input[type="submit"],但我有一个按钮 (<button id=""></button>)。

我的表单的完整代码:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="js/my_script.js" type="text/javascript"></script>

<form id="myForm" action="userInfo.php" method="post">
<textarea name="mesazhi" cols="35" rows="4"></textarea>
<?php $idiperdoruesit = $_SESSION['id']; ?>
<input type="hidden" name="idiperdoruesit" value="<?php echo $idiperdoruesit; ?>" />
<br /><button id="sub" style="border-radius:0px; border-size:2px; border-style:solid; border-color:#ffffff; border-width:thin; background-color:#000000; color:#ffffff; height:26px; width:60px;  font-size:16px;">Send</button>
</form>

当用户单击按钮发送时,jquery 函数将消息发送到数据库而不重新加载页面。下面是jquery函数:

$("#sub").click( function() {
 $.post( $("#myForm").attr("action"), 
         $("#myForm :input").serializeArray(), 
         function(info){ $("#result").html(info); 
   });
 clearInput();
});

$("#myForm").submit( function() {
  return false; 
});

function clearInput() {
    $("#myForm :input").each( function() {
       $(this).val('');
    });
}

我怎样才能通过按回车键发送消息?

【问题讨论】:

  • 那你为什么要使用按钮呢?
  • 使用 onkeypress 事件??
  • 那个"duplicate"与这个问题无关……
  • 注意&lt;button&gt;可以用来直接提交表单:&lt;button type=submit&gt;

标签: jquery html forms button enter


【解决方案1】:

您可以使用keydown 处理程序来执行此操作。返回键是键 13。

$('input').on( 'keydown', function( e ) {
  if( e.which == 13 ) {
    tickleAPolarBear();
    //or something like $('#myForm').submit();
  }
} );

有关 keydown 事件的更多信息,请参阅mdn

【讨论】:

  • tickleAPolarBear(LeftHand, RightHand){return null;}
【解决方案2】:

使用表单的提交事件,表单的默认行为是在单击提交按钮或在表单输入上按下回车键时提交。

$("#myForm").submit(function(){
    $.post( $("#myForm").attr("action"), 
         $("#myForm :input").serializeArray(), 
         function(info){ $("#result").html(info); }
    );
    clearInput();
    return false;
});

现在让您的按钮成为提交按钮并摆脱点击事件。现在,当您在文本区域以外的任何输入中按 Enter 键时,表单将提交并且您的处理程序将被调用。不需要 keydown 事件处理程序和点击处理程序。

【讨论】:

  • 我不明白为什么人们如此坚持使用点击事件来处理表单...
  • 如果我没有弄错用提交按钮验证表单,提交按钮必须在表单标签内。但是有时您需要将按钮放在其他地方,现在它不会提交任何东西。所以这就是人们使用常规按钮的原因
  • 所以,已经说过常规按钮触发提交事件。或者使用 form 属性使其成为表单的一部分。无论如何,这个问题显然不是这种情况。
  • 这不是我刚才说的吗?是的,他可以使用 form 属性使其提交表单,但是如果同一表单有多个提交按钮不在表单标签中,那会更复杂。我想说的是,判断他使用什么代码不是我们的职责,“最佳”解决方案可能无法适应其应用。我们没有他构建应用程序的所有信息或上下文。
  • 表格就在他的问题中。如果他使用点击事件而不是表单事件,他可以通过完全删除表单来简化他的代码,因为他根本没有使用它的功能。
猜你喜欢
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
相关资源
最近更新 更多