我的目标是单击一个按钮,然后单击显示使用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
}
答案 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"
将引用该按钮(因为输入名称是表单的属性),而不是提交表单的函数。