我有以下表格:
<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正在做更准确的事情。
答案 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时不会被触发