如何在提交无按钮表单时获取触发功能

时间:2008-10-30 13:50:16

标签: javascript

我有一个页面上有很多表格。可能是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:void%200”,以便将其发布到虚假页面。我想在processRow中处理我自己的帖子。

永远不会调用OnSubmit,因此永远不会调用ProcessRow。

显然,所有函数和变量的名称都已更改,以保护其身份:D

当我以编程方式调用submit时,如何在每个表单中获取一个函数。

3 个答案:

答案 0 :(得分:2)

当您以编程方式提交表单时,故意不会触发onsubmit处理程序。这是为了避免无限递归,如果事件处理程序会导致再次触发事件(因此再次调用事件处理程序)

但是,您当然可以自己拨打processRow()电话代替.submit()电话。

您可以在表单之外输入。有一种观点认为<form>如果不打算通过HTML提交给服务器,则<form>不应该是{{1}}。

答案 1 :(得分:0)

查找dispatchEvent,它等效于fireEvent。这不是世界上最容易使用的东西,但我认为这就是你要找的东西。

我很惊讶没有库可以帮助解决这个问题。 Prototype(我最常用的那个)与元素上的.fire()方法最接近。

答案 2 :(得分: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>

这有什么缺点吗?