2008-10-30 44 views
1

我有一個包含許多表單的頁面。可能是1..200。這些形式都沒有按鈕,它們是以編程方式構建的。我正在使用jquery提交所有被檢查的表單。如何在提交無按鈕表單時觸發函數

function FakeName() 
    { 

      $("input:checked").parent("form").submit(); 

    } 

我的形式是這樣的:

  <form name="FakeForm<%=i%>" action="javascript:void%200" onSubmit="processRow(<%=i%>)" method="post" style="margin:0px;"> 
       <input type="checkbox" name="FakeNameCheck" value="FakeNameCheck"/> 
       <input type="hidden" name="FakeNum" value="<%= FakeNum%>"/> 
       <input type="hidden" name="FakeId" value="<%=FakeIdr%>"/> 
       <input type="hidden" name="FakeAmt" value="<%=FakeAmount%>"/> 
       <input type="hidden" name="FakeTrans" value="FakeTrans"/> 
      </form> 

注意:操作設置爲 「的javascript:無效%200」,以便它發佈到一個假網頁。我想在processRow中處理我自己的帖子。

OnSubmit永遠不會被調用,因此ProcessRow永遠不會被調用。

明顯的函數和變量的所有名稱已被更改,以保護他們的身份:d

我怎樣才能得到一個函數在每個窗體,當我打電話提交編程火。

回答

2

當您以編程方式提交表單時,故意不會觸發onsubmit處理程序。這是爲了避免無限遞歸,如果事件處理程序會導致事件再次被觸發(並因此再次調用事件處理程序)

但是,當然您可以自己調用processRow()函數代替.submit()調用。

您可以在表單之外輸入內容。有一種思想是,如果<form>不打算通過HTML提交給服務器,那麼<form>不應該是<form>

+0

是的。認爲將所有我需要的字段分組到表單中會更容易,然後我可以遍歷所有表單。建議使用一個div來代替?我將在頁面上有許多FakeForms。 – 2008-10-30 14:04:33

0

查找dispatchEvent和它相當於fireEvent。這不是世界上最容易使用的東西,但我認爲這就是你要找的。

我很驚訝,沒有圖書館可以輕鬆地幫助您。原型(我使用過的最多)在元素上最接近.fire()方法。

0

看起來我可能能夠做到這一點:

<form name="FakeForm<%=i%>" action="javascript:processRow(<%=i%>)" method="post" style="margin:0px;"> 
           <input type="checkbox" name="FakeNameCheck" value="FakeNameCheck"/> 
           <input type="hidden" name="FakeNum" value="<%= FakeNum%>"/> 
           <input type="hidden" name="FakeId" value="<%=FakeIdr%>"/> 
           <input type="hidden" name="FakeAmt" value="<%=FakeAmount%>"/> 
           <input type="hidden" name="FakeTrans" value="FakeTrans"/> 
         </form> 

有什麼缺點呢?