非同期イベント後にフォームを送信し、キューに入ったイベントを呼び出すトラブルを受ける

StackOverflow https://stackoverflow.com//questions/10655710

質問

これはローカルセットアップ(jQuery.1.6.4を使用する)で作業していますが、DEVセットアップ(jQuery.1.3.2)には機能していません。

次の形式を考慮してください -

<form onsubmit="return validateMacros();">
     <input id="formsubmitbutton" type="submit" name="formsubmitbutton" value="Submit" />
</form>
.

上記のvalidateMacros();呼び出しを注意してください。

と次のJavaScript -

jQuery(document).ready(function()
{

$("input#formsubmitbutton").click(preValidateUrls); 

        function preValidateUrls(evt)
        {
                evt.preventDefault(); //to prevent form submission until completion of async event

                $.ajax({
                    ...
                    ...
                    success: function(res)
                    {
                         $("form#frmBanners").submit();  //This submits the form in case of both versions but in 1.3.2 case, the validateMacros() function is not called
                    }
               });
       }

});

function validateMacros()
{
   //some logic here - which is not executing in case of jquery.1.3.2
}
.

jQuery.1.6.4がロードされている場合、関数validateMacros()は、希望するpreValidateUrls()の実行完了後に実行されます。

しかしjQuery.1.3.2がロードされている場合、validateMacros()はまったく実行されず、フォームは送信されます。

どのようにして両方のバージョンで作業していますか。私は何を間違っていますか?

役に立ちましたか?

解決

目立たない!

$('form#frmBanners').on('submit', validateMacros);
.

ここでやっていることは、加入していますフォームのsubmitイベントへの関数は、IDを与えた後(例としてfrmBannersを使用していました)。対話不可の手段は、HTMLにJavaScriptを入れていないことを意味します。これはjQueryのようなライブラリの主な目的です。そのため、外部のJavaScriptファイル内の任意の場所に、上記の行が含まれています。送信ボタンをクリックすると、フォームが送信ボタンをクリックすると、関数が呼び出されます。

だから、$("form#frmBanners").submit();を呼び出すと、イベントが発生し、関数が呼び出されます。これは、これらの種類のイベントを発射する限り、条約に近いステップです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top