2009-11-17 56 views
2

我无法理解绑定到文档的点击事件会通过“输入”表单提交触发。这里是我正在看的测试页面:文档在'输入'表单提交时触发

<html> 
<head> 
    <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js'></script> 
    <script type='text/javascript'> 
     $(function(){ 
      // Form Submission 
      $('form').bind('submit', function(event){ 
       console.log('Submit: ', event); 
       return false; 
      }); 
      // Input events 
      $('input[type=text]').bind('keyup', function(event){ 
       console.log('Keyup: ', event); 
      }).bind('keydown', function(event){ 
       console.log('Keydown: ', event) 
      }); 
      // Doc Click 
      $(document).click(function(event){ 
       console.log('Document Click: ', event); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form action='test.html' method='GET'> 
     <input type='text'> 
     <input type='submit' value='Submit'> 
    </form> 
</body> 
</html> 

任何想法的?

+0

您是否点击带定点设备(鼠标)的提交按钮,或者通过按下键盘上的Enter键来提交表单? – anddoutoi 2009-11-17 09:56:52

+0

通过输入键,我想我已经在问题中,更新了错字。 – 2009-11-17 09:57:43

回答

3

将type ='submit'更改为type ='button'。测试IE8和FF3.5。

+0

这是一个很好的解决方法,但它为什么会发生? – 2009-11-17 10:17:39

+0

我删除了它,因为它在你想使用回车来提交表单但是提交按钮没有的时候有效。但是,您可以通过按钮的onclick事件再次调用提交操作。 $('input [type = button]')。click(function(){$('form')。submit();}); 但是我不确定为什么要为您的操作调用点击事件,请回答问题以获得更多答案。如果我的解决方法适用于您(随着此评论中的其他更改),请随时为其投票。 – SimonDever 2009-11-17 10:44:53

+1

在多一点研究之后,似乎表单中的回车键调用了要按下的提交按钮,从而触发文档单击。在将提交类型更改为像上面这样的事件或带有onclick事件的按钮标记之前,没有办法避免这种情况:D – SimonDever 2009-11-17 10:49:43

0

当你只有1个字段,然后你输入时,表单会提交。如果你把多个输入字段放在它上面,它不会这样做。这是一个依赖于浏览器的行为。