意外提交“提交”按钮单击

时间:2011-03-28 14:57:47

标签: javascript jquery

如果我使提交按钮处于活动状态(使用 Tab 按钮),然后按 Enter ,将触发按键处理程序,并在按钮上生成单击事件。但OnClick和提交处理程序不会触发。它只是默默地发布表格。为什么呢?

<script src="../js/jquery.js" type="text/javascript"></script>
<script type="application/javascript">

$().ready(function(){
     $("#f1").keypress(function(event) {
          if (event.keyCode==13){
            var currentInputId = $(event)[0].target.id;
            var currentInput = $('#'+currentInputId);
            currentInput.click();
            return false;
          }
      });


  $("#f1").submit(function(){
   alert ("huy")
  })
})
</script>
<form name="f1" id="f1" method="POST">
<input type="text">
<input type="submit" onclick="return false;" id="submit">
</form>

1 个答案:

答案 0 :(得分:3)

从头开始重写的答案

在我的机器上你的场景中发生的事情(在提交按钮上移动输入,然后按ENTER键)是:

  • keypress处理程序在按钮上运行并调用click
  • 按钮onclick返回false
  • 事件处理停止(表单未提交)

如果我删除了onclick="return false;",那么:

  • keypress处理程序在按钮上运行并调用click
  • 表单已提交,但 submit处理程序被称为

更多测试表明submit处理程序未被调用*,因为您从false处理程序返回keypress

所以,要解决这个问题:

  1. 从按钮
  2. 中删除onclick="return false;"
  3. return false处理程序
  4. 中删除keypress

    这将显示警告,然后按预期提交表单。