如何让event.preventDefault处理动态函数

时间:2017-01-16 17:36:47

标签: javascript jquery

我有一个分成几个部分的表单。当用户点击&#34;继续&#34;时,我有一个jquery脚本,检查是否填写了所有必填字段。如果有任何问题,则会出现一个框,其中包含警告和按钮(实际上是<a>标签),用于&#39;是&#39;并且没有&#39;。我将onclick事件附加到“是”&#39;触发功能的按钮。该功能有效,但地址栏(website.com/page#)中显示#,我猜测是因为我的代码中的event.preventDefault();无效。

以下是添加onclick事件的函数:

function checkSection (event, check, goTo) {
    event.preventDefault();
    var emptyFields = "0";
    $("#ia"+check+"Div .check").each(function() {
        var val = $(this).val();

        if (val == "") {
            emptyFields++;
        } 
    });

    if (emptyFields >= 1) {
        $(".mask").show();
        $("#warningBox").show();
        $(document).on("click", "#yesBtn", function() { 
            var x = window['save'+check];
            x(event, goTo);
            $("#warningBox").hide();
            $(".mask").hide();
        });
    } else {
        var x = window['save'+check];
        x(event, goTo);
        $("#warningBox").hide();
    }
}

以下是我将事件添加到的标记:

<div class="medBtn short">
    <div class="btnTbl">
        <a href="#" id="yesBtn">Yes</a>
    </div>
</div>

我最终调用的函数是这样的:

function saveContact(event, val) {
    event.preventDefault();

   //Do Stuff - This is the function where event.preventDefault(); isn't working
}

就像我说的那样,这个功能仍然有效,所以如果它不是我可以绕过的东西,那很好。我只是不喜欢在地址栏中输入#。

1 个答案:

答案 0 :(得分:1)

事件发生前事件对象不存在

您可以防止实际事件处理程序中的默认值

$(document).on("click", "#yesBtn", function(event) {
    event.preventDefault();
    ....
})