1

これはローカルセットアップ(jquery.1.6.4を使用)で機能していますが、開発セットアップ(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()まったく実行されず、フォームが送信されるだけです。

両方のバージョンで動作させるにはどうすればよいですか。私は何を間違っていますか?

4

1 に答える 1

1

目立たないように!

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

ここで行っているのは、id を与えた後、関数をフォームのイベントにサブスクライブすることです (例として使用されていることに気付きました)。邪魔にならないということは、jQuery などのライブラリの主な目的である、HTML に Javascript を配置していないことを意味します。したがって、外部 Javascript ファイルの任意の場所に、上記で提供した行を含めます。送信ボタンがクリックされたときだけでなく、フォームが送信されるたびに、関数が呼び出されます。submitfrmBanners

したがって、 を呼び出す$("form#frmBanners").submit();と、イベントが発生し、関数が呼び出されます。これは、この種のイベントの発生に関する限り、規則に従うことに一歩近づきました。

于 2012-05-18T15:46:44.490 に答える