5

我有以下表格:
<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 正在做一些更准确的事情。

4

3 回答 3

2

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

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

改为使用getElementById()(这是 jQuery 内部使用的):

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

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

<form id="dealerLocatorForm" ... >
于 2011-07-27T22:04:49.443 回答
0

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

document.formName.submit();

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

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

document.form.dealerLocatorForm.submit();

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

document.dealerLocatorForm.submit()
于 2011-01-21T17:47:15.173 回答
0

我可能错了,但我认为当您使用 jquery 提交表单时,它会绕过其他绑定事件,例如绑定到表单的 onsubmit()。您的信标可能会被提交时的某种验证触发,这可能是使用 jquery 时没有触发它的原因

于 2011-01-21T17:56:25.517 回答