Форма отправки jQuery vs document.form.submit - PullRequest
5 голосов
/ 21 января 2011

У меня есть следующая форма:
<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 ]

2 голосов
/ 28 июля 2011

Поведение этого синтаксиса нестандартно и не согласовано во всех браузерах:

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

Вместо этого используйте getElementById() (это то, что jQuery использует внутри):

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

Убедитесь, что в элементе формы установлен атрибут id:

<form id="dealerLocatorForm" ... >
0 голосов
/ 21 января 2011

Я могу ошибаться, но я думаю, что когда вы отправляете форму с помощью jquery, она обходит другие связанные события, такие как onsubmit (), привязанные к форме.Ваш маяк, вероятно, срабатывает из-за какой-то проверки при отправке, и, вероятно, поэтому он не срабатывает при использовании jquery

0 голосов
/ 21 января 2011

Синтаксис для отправки формы через javascript следующий:

document.formName.submit();

В вашем случае вы используете имя формы как dealerLocatorForm

Код, который вы использовали для отправки формы-

document.form.dealerLocatorForm.submit();

Это неверно согласно синтаксису, оно должно быть следующим -

document.dealerLocatorForm.submit()
...