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

私は間違っているかもしれませんが、jqueryを使用してフォームを送信すると、フォームに関連付けられたonsubmit()などの他のバインドされたイベントをバイパスすると思います。ビーコンは、送信時に何らかの検証によって起動される可能性があります。そのため、jqueryを使用するとビーコンが起動されない可能性があります。

于 2011-01-21T17:56:25.517 に答える
0

JavaScript を使用してフォームを送信するための構文は次のとおりです。

document.formName.submit();

あなたの場合、フォーム名はdealerLocatorForm

フォームの送信に使用したコードは -

document.form.dealerLocatorForm.submit();

これは構文的に間違っています。次のようにする必要があります-

document.dealerLocatorForm.submit()
于 2011-01-21T17:47:15.173 に答える