2015-10-29 2 views
-1

Моя цель - щелкнуть по кнопке и щелкнуть по кнопке подтверждения с помощью загрузочного бокса. Если я выберу ОК, он должен вернуться назад, если я нажму «отменить», он ничего не должен делать. В настоящее время, когда я нажимаю кнопку, она возвращает сообщения перед отображением поля подтверждения, поэтому появляется и сразу исчезает.Post back сделан до того, как bootbox.confirm называется

Script

<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

Вы бы гораздо лучше меняли свою кнопку на кнопку 'и затем обрабатывать событие click -' $ ('# submit'). Click (function() {..}); 'и внутри этого, вызывая подтверждение и если true, вызовите $ ('form'). submit();' –

ответ

2

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

onclick="DeleteDeliverables(event)" 

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

Вы также должны поставить

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

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

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

+0

Хмм по какой-то причине, когда я сделал это, теперь он не отправляет форму, когда я нажимаю ОК. –

+0

Я обновлял свой ответ, чтобы объяснить, что вы тестировали. – Barmar

+0

В моем случае, откуда будет формироваться? Поскольку я не указываю ID –