我有一个页面上有很多表格。可能是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时,如何在每个表单中获取一个函数。
答案 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>
这有什么缺点吗?