【问题标题】:Having trouble submitting form and calling queued events after asynchronous event在异步事件之后提交表单和调用排队事件时遇到问题
【发布时间】:2012-05-18 15:43:01
【问题描述】:

我在本地设置上工作(使用 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() 根本不执行,表单只是提交。

如何让它在两个版本上都运行。我做错了什么?

【问题讨论】:

    标签: jquery preventdefault stoppropagation jquery-1.3


    【解决方案1】:

    不显眼!

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

    我们在这里所做的是订阅表单的submit 事件的函数,在你给它一个id 之后(我刚刚注意到你使用frmBanners 作为例子)。 Unobtrusive 意味着您没有在 HTML 中添加任何 Javascript,这是 jQuery 等库的主要目的。因此,在您的外部 Javascript 文件中的任何位置,包括我上面提供的行。每当表单被提交并且不是仅仅在点击提交按钮时,该函数都会被调用。

    因此,当您调用$("form#frmBanners").submit(); 时,会触发事件并调用函数。就触发此类事件而言,这更接近于遵循惯例。

    【讨论】:

    • 另外,为什么要加载旧版本的 jQuery?只需加载最新的。
    • 您能否详细说明您的答案。而且我们现在还不能在生产上升级到 1.3.2,所以需要让它工作:(。
    • 那行得通。谢谢。但是 jquery .on() 支持 1.7 版以后。我必须为此做$('form#frmBanners').submit(function() { return validateMacros(this); );
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    相关资源
    最近更新 更多