Javascript 在调用bootbox.confirm之前进行回发

Javascript 在调用bootbox.confirm之前进行回发,javascript,asp.net-mvc,twitter-bootstrap,bootbox,Javascript,Asp.net Mvc,Twitter Bootstrap,Bootbox,我的目标是单击一个按钮,然后单击“使用引导框显示确认框”。如果我选择ok,它应该回发,如果我单击cancel,它应该什么都不做。当前,当我单击按钮时,它会在显示确认框之前发回,因此它会出现,然后立即消失 剧本 <script> function DeleteDeliverables(e,myform) { e.preventDefault(); bootbox.confirm("Are you sure you would like to delete t

我的目标是单击一个按钮,然后单击“使用引导框显示确认框”。如果我选择ok,它应该回发,如果我单击cancel,它应该什么都不做。当前,当我单击按钮时,它会在显示确认框之前发回,因此它会出现,然后立即消失

剧本

<script>
    function DeleteDeliverables(e,myform) {
    e.preventDefault();


    bootbox.confirm("Are you sure you would like to delete the selected deliverables? They will be permanently deleted", function (result) {
        if (result) {
            var deliverables = "";
            var cbs = document.getElementsByTagName('input');
            for (var i = 0; i < cbs.length; i++) {
                if (cbs[i].type === 'checkbox') {
                    if (cbs[i].checked) {
                        deliverables += cbs[i].value + ',';
                    }
                }
            }
            deliverables = deliverables.replace(/,\s*$/, "");
            document.getElementById("hiddenDeliverable").value = deliverables;
            myform.submit();
        }

    });

    }
</script>

你打电话时遗漏了这个论点。应该是:

onclick="DeleteDeliverables(event)"
如果检查Javascript控制台,可能会看到错误,因为undefined.preventDefault不是函数。由于您没有阻止默认操作,因此单击submit按钮提交表单

你还需要把

document.getElementById("formID").submit();
在bootbox.confirm回调函数中,因为preventDefault阻止正常表单提交


最后,要使其工作,您需要为submit按钮使用不同的名称。更改名称=提交到类似名称=提交按钮的内容。否则,document.getElementByIdformID.submit将引用该按钮,因为输入名称是表单的属性,不是提交表单的函数。

Hmm由于某种原因,我现在这样做时,当我单击“确定”时,它不会提交表单。我正在更新我的答案,以便在您进行测试时解释这一点。在我的情况下,formID来自哪里?由于我没有指定ID,您也可以将表单作为另一个参数传递给函数:onclick=deleteDeliverableEvent,this.form您最好将按钮更改为Delete,然后处理其单击事件-$'submit'。clickfunction{..};在里面,调用confirm,如果为true,则调用$'form'。submit`
onclick="DeleteDeliverables(event)"
document.getElementById("formID").submit();