jQuery表单提交vs document.form.submit

时间:2011-01-21 17:23:03

标签: javascript jquery forms adobe-analytics

我有以下表格:
<form name="dealerLocatorForm"method="post"action="result.php">...</form>

我已将Omniture SiteCatalyst formAnalyis插件附加到它,它应该仅在未提交表单时发回信息。

预期的行为:当使用提交按钮提交表单时,应该触发任何信标(因为事情按预期进行)。

问题:
表单需要一些验证,因此开发人员决定使用以下方式以编程方式提交表单:document.form.dealerLocatorForm.submit()document.dealerLocatorForm.submit()

但是,当表单以这种方式提交时,插件会触发一个信标,告知我表单未提交,但事实并非如此。

另一方面,如果我使用jQuery提交:jQuery('form[name=dealerLocatorForm]').submit()
表格是正确提交的,灯塔不会发射!

简而言之,jQuery成功地复制了表单提交的所有功能,就好像它是由提交按钮提交的,而document.form提交则不是。

所以我的问题是:有什么区别:
document.form.dealerLocatorForm.submit()
document.dealerLocatorForm.submit()

jQuery('form[name=dealerLocatorForm]').submit()

似乎jQuery正在做更准确的事情。

3 个答案:

答案 0 :(得分:2)

此语法的行为是非标准的,并且在浏览器中不一致:

document.form.dealerLocatorForm.submit()
document.dealerLocatorForm.submit()

改为使用getElementById()(jQuery在内部使用):

document.getElementById("dealerLocatorForm").submit()

确保您在表单元素上设置了id属性:

<form id="dealerLocatorForm" ... >

答案 1 :(得分:0)

通过javascript提交表单的语法如下 -

document.formName.submit();

在您的情况下,您的表单名称为dealerLocatorForm

您用于提交表单的代码是 -

document.form.dealerLocatorForm.submit();

根据语法这是错误的,它应该如下 -

document.dealerLocatorForm.submit()

答案 2 :(得分:0)

我可能错了,但我认为当你使用jquery提交表单时,它会绕过绑定到表单的其他绑定事件,例如onsubmit()。 您的灯塔可能会因提交某种验证而被解雇,这可能就是为什么在使用jquery时不会被触发