2011-05-05 64 views
0

由於某些原因,在這兩種情況下提交事件是不同的。請幫助理解爲什麼。這是一個提交和一個按鈕的表單。點擊提交併發出警報,點擊按鈕,警報啓動。表單元素有什麼不同?我如何讓兩者工作相同?順便說一句:我正在Chrome中測試。這需要支持所有支持myform.submit()的瀏覽器;爲myform.submit()創建一個處理函數,它通過點擊按鈕來工作

  <FORM id="myform" action="saveform.asp" method="post"> 
      <input type="hidden" name="my_val" value="" /> 
      <INPUT id="button" value="Save Button" class="save-submit" type=button > 
      <INPUT id="button" value="Save Submit" class="save-submit-hidden" type=submit> 
      </FORM> 
      <script language=javascript> 


        $("form").submit(function() { 
         alert('submitting'); 
         return false; 
        }); 


       $('.save-submit').click(function() { 
        myform.submit(); 
       }); 
      </script> 
+1

其中之一是,您的HTML有許多問題。所有表單元素都應該有一個名稱,並且您不應該在頁面上有兩個具有相同ID的元素。 – cdeszaq 2011-05-05 19:10:06

+0

另外,所有的屬性都應該引用。 'type =「button」'和'type =「submit」'。 – 2011-05-05 21:08:18

回答

1
myform.submit(); 

應該

$(myform).submit(); 

,並用它爲我的作品。

編輯:

這似乎是一個jQuery的不良特性:jQuery override form submit not working when submit called by javascript on a element

+0

也適用於我,但我試圖理解爲什麼它不抓住其他事件。 – kiev 2011-05-05 20:42:35

+0

沒有'$',你調用了javascript的submit函數,而不是jQuery的。這可能是jQuery中的一個錯誤/錯誤特徵,但它看起來像當你以這種方式提交時,它繞過了正常的提交事件。但是當你實際點擊一個提交按鈕(或使用jQuery提交表單)時,jQuery通常會正常接收事件並正確調用其他處理程序。 – 2011-05-05 20:55:20

+0

是的,請參閱http://stackoverflow.com/questions/142000/jquery-override-form-submit-not-working-when-submit-called-by-javascript-on-a-ele。找不到它的jQuery錯誤報告。 – 2011-05-05 20:57:59

1

只要刪除所有JavaScript的。單擊表單上的類型=提交輸入會導致它提交,不需要javascript。除非每次提交表單時都需要運行一些javascript(無論它是如何提交的),在這種情況下,使用$(「form」)。submit函數並刪除$('。save-submit')。點擊功能。