Обратная запись производится до вызова bootbox.confirm

Моя цель состоит в том, чтобы нажать на кнопку и при нажатии показать окно подтверждения, используя 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>

Postback

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

         //omitted
    }

1 ответ

Вы пропустили аргумент, когда вы звоните DeleteDeliverables(), Так должно быть:

onclick="DeleteDeliverables(event)"

Если вы проверите консоль Javascript, вы, вероятно, увидите ошибку, потому что undefined.preventDefault это не функция. Поскольку вы не запрещаете действие по умолчанию, нажмите кнопку "Отправить", чтобы отправить форму.

Вам также нужно поставить

document.getElementById("formID").submit();

в bootbox.confirm() функция обратного вызова, так как preventDefault мешает нормальной подаче формы.

Наконец, чтобы это работало, вам нужно использовать другое имя для кнопки отправки. + Изменить name="submit" что-то вроде name="submitButton", Иначе, document.getElementById("formID").submit будет ссылаться на кнопку (потому что входные имена являются свойствами формы), а не на функцию, которая отправляет форму.

Другие вопросы по тегам