2008-10-30 84 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> 

有什么缺点呢?