Предотвратить отправку кнопок с подтверждением загрузки и отображением их значений в сообщении

У меня есть простая форма с 3 кнопками, каждая из которых выполняет свое действие. По щелчку я хочу, чтобы пользователь подтвердил свое действие с помощью bootbox.confirm(). Я хочу, чтобы в окне подтверждения отображалось: «Вы уверены в своем выборе:» + значение. Как я могу этого добиться?

HTML:

<form action="" method="post">
     <button  type="submit" name="action" value="success" class="confirm"></button>
     <button type="submit" name="action" value="fail" class="confirm"></button>
     <button type="submit" name="action" value="no exam" class="confirm</button>
</form>

Javascript/jquery, который я пробовал:

<script>
  $(document).ready(function() {
    $(document).on("click", ".confirm", function(e) {
        e.preventDefault();
        bootbox.confirm("Are you sure for your choice?", function(result) {
        if (result) {
          console.log("user confirmed");
        } else {
            console.log("user declined");
        }
      });
    });
  });
</script>

Это правильный путь (с классами на каждой кнопке) или мне нужно выбрать форму? Я правильно получаю окно подтверждения и журналы, но в случае успеха я не знаю, как отправить. Также я не знаю, как поместить выбранное значение в сообщение.


person Antonis Grigoriadis    schedule 15.11.2013    source источник
comment
Выглядит разумно. Я бы переместил e.preventDefault(); вызов обратного вызова для окна подтверждения, поэтому вы отменяете действие только в том случае, если пользователь не подтверждает.   -  person Michael Dunlap    schedule 16.11.2013


Ответы (1)


Надеюсь, вы смогли понять это, но если нет, то вот все, что вам не хватало. Кроме того, поскольку этот поток является асинхронным, не перемещайте e.preventDefault() в обратный вызов.

$(document).ready(function() {
    $(document).on("click", ".confirm", function(e) {
        e.preventDefault();
        var $this = $(this);
        bootbox.confirm("Are you sure for your choice: "+$this.val()+"?", function(result) {
            if (result) {
                console.log("user confirmed");
            } else {
                console.log("user declined");
            }
        });
    });
});
person achendrick    schedule 05.12.2013