为什么我的按钮在jquery中单击两次,如果我把它放在submitHandler中?

时间:2015-11-05 16:37:26

标签: javascript jquery jquery-validate

我有一个简短的表单,你可以在这里看到http://jsfiddle.net/azxpckg5/1/

我遇到了问题 - 重现它的方法是点击save按钮。然后会出现另一个名为submit的按钮。当用户点击它时 - 它会消失并且没问题。但是,当用户重复此过程时(再次点击save并再次点击submit - 他可以看到最后一次点击重复了两次。我相信错误可能在某处:

submitHandler: function (form) {
        alert("here!");
        $(".overlay-boxify2").toggleClass("open");
        $('#submitcForm').click(function() {
   // 
         $(".overlay-boxify2").toggleClass("open");
            alert("hegdsgsd");
        });
        return false;
    }

但说实话,我不知道如何修复它以及可能出现的问题。你能帮帮我吗?

2 个答案:

答案 0 :(得分:2)

问题是因为您在每次提交表单时都会将另一个点击事件处理程序附加到#submitcForm按钮(单击#saveBtn时会发生这种情况。将点击处理程序移到validate()调用,您的代码将按您的要求运行。

$('#invoiceForm').validate({
    // settings...
});

$('#submitcForm').click(function () {
    $(".overlay-boxify2").toggleClass("open");
});

Updated fiddle

答案 1 :(得分:-1)

使用.off()阻止在按钮上附加多个click eventListener

submitHandler: function (form) {
    alert("here!");
    $(".overlay-boxify2").toggleClass("open");
    $('#submitcForm').off().click(function() { // see the use of .off()
        $(".overlay-boxify2").toggleClass("open");
        alert("hegdsgsd");
    });
    return false;
}

请参阅more about .off()