我有这个工作在本地设置(与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