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

时间:2015-10-29 19:10:07

标签: javascript asp.net-mvc twitter-bootstrap bootbox

我的目标是单击一个按钮,然后单击显示使用bootbox的确认框。如果我选择确定它应该回发,如果我点击取消它应该什么都不做。目前,当我点击按钮时,它会在显示确认框之前回发,所以它会立即显示,然后立即消失。

脚本

<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>

按钮

<input type="submit" name="submitButton" class="btn btn-default" value="Delete" onclick="DeleteDeliverables(event,this.form)" /></td>

回传

[HttpPost]
    public ActionResult DeliverableManagement(string submit, DeliverableManagementModel model)
    {

         //omitted
    }

1 个答案:

答案 0 :(得分:2)

当你致电$('document').ready( function() { var hour = new Date().getHours(); // ... etc ... } ); 时,你遗漏了这个论点。它应该是:

DeleteDeliverables()

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

你还需要把

undefined.preventDefault
document.getElementById("formID").submit(); 回调函数中的

,因为bootbox.confirm()会阻止正常的表单提交。

最后,要使其工作,您需要为提交按钮使用不同的名称。将preventDefault更改为name="submit"之类的内容。否则,name="submitButton"将引用该按钮(因为输入名称是表单的属性),而不是提交表单的函数。