2009-11-17 51 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個字段,然後你輸入時,表單會提交。如果你把多個輸入字段放在它上面,它不會這樣做。這是一個依賴於瀏覽器的行爲。