【问题标题】:form.submit fires multiple times, one extra time after each responseform.submit 触发多次,每次响应后额外触发一次
【发布时间】:2011-03-04 23:35:01
【问题描述】:

我有一个多次触发的 form.submit。第一次,还好。在我收到回复后,如果我再次单击提交按钮,它会触发两次。然后三次。似乎每次响应返回时,下次单击按钮时提交都会触发一次额外的时间。

RetrievePassword = function () {
    var $popup = $("#fancybox-outer");
    var form = $popup.find("form");
    form.submit(function (e) {
        var data = form.serialize();
        var url = form.attr('action');
        $.ajax({
            type: "POST",
            url: url,
            data: data,
            dataType: "json",
            success: function (response) {
                if (response.Success) {
                    $.fancybox.close();
                }

                alert(response.Message);
            },
            error: function (xhr, status, error) {
                alert(xhr.statusText);
            }
        });

        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
        return false;
    });

};

我什至不确定如何调试它。任何建议表示赞赏...

【问题讨论】:

  • e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return false; 太过分了。由于您使用的是 jQuery,因此您只需要执行 e.preventDefault(); 即可(以及 e.stopPropagation(); 以防您需要防止事件冒泡 - 但通常这不是必需的)

标签: javascript .net jquery asp.net asp.net-mvc


【解决方案1】:

我假设您多次致电RetrievePassword()。每次您调用它时,都会注册另一个 onsubmit 处理程序。

解决方案是只注册一次处理程序。

【讨论】:

  • 你是对的,我也从输入按钮调用了函数:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2015-10-20
相关资源
最近更新 更多