запрашивает у пользователя подтверждение отправки без ajax

#javascript #jquery #ajax #api

#javascript #jquery #ajax #API

Вопрос:

У меня есть событие отправки, которое использует native POST (не ajax).

 <form method="post">
<button type="submit" value="submit"></button>
</form>
  

Как я могу запросить пользователя, когда пользователь нажал на кнопку отправки? если пользователь нажал подтвердить, то только это будет продолжаться.. Я знаю, что могу сделать это с помощью ajax, но возможно ли это сделать и с native post помощью?

Ответ №1:

Вы можете добавить a confirm() к submit событию формы и вернуть его значение анонимной функции следующим образом (используя jQuery):

 $('form').on('submit', function() { 
    return confirm('Are you sure?');
});
  

Демонстрация jsFiddle

Комментарии:

1. могу ли я это встроить? поскольку это всего лишь одна строка

2. Ну, вы можете встроить, но это очень плохая практика. (Смотрите Комментарий, который я только что сделал в другом ответе).

3. почему плохая практика? для моей страницы регистрации у меня нет ни одного файла js. так что, возможно, просто строка, это просто для запроса сообщения о подтверждении в одну строку.

4. @MariaJane, ты прочитал ссылку, которую я отправил? w3.org/wiki/The_principles_of_unobtrusive_JavaScript

Ответ №2:

Просто сделай это

 <form onsubmit="return confirm('Are you sure?')" />
  

Комментарии:

1. Старайтесь не рекомендовать навязчивые обработчики событий.

2. @BenM Я обнаружил, что это более прямолинейно, почему бы и нет?

3. @MariaJane w3.org/wiki/The_principles_of_unobtrusive_JavaScript

4. @MariaJane поскольку они устарели, усложняют обслуживание кода (что жизненно важно при работе в команде), а также нарушают принцип разделения интересов

5. @MariaJane Какой отличный взгляд на вещи, это обязательно сделает вас отличным разработчиком.

Ответ №3:

Хотя это не рекомендуемый способ, но он будет делать то, что вы хотите

 <form method="post" onsubmit="return confirm('Do you really want to submit');">
  <button type="submit" value="submit">Submit</button>
</form>
  

Ответ №4:

 function submitForm() {
var r = confirm("Do you want to submit the form?");
if (r == true) {
    document.getElementById("mainForm").submit();
} else {
    return false;
}
}  
 <html>
<body>
<form id="mainForm" method="post" onsubmit="submitForm()">
  Enter name: <input type="text" name="fname">
  <input type="submit" value="Submit">
</form>
</body>
</html>  

Комментарии:

1. Пожалуйста, не рекомендуйте навязчивые обработчики событий. Кроме того, ваш if() else блок не нужен, только return confirm() функция.

2. Это показывает, что есть возможность получить ответ из диалогового окна подтверждения, в большинстве случаев вам нужно что-то сделать при отправке или отмене.

Ответ №5:

Да, это возможно.

 <form id="f" action="demo_form.asp" onsubmit="return false">
  Enter name: <input type="text" name="fname">
  <input type="submit" onclick="t()" value="Submit">
</form>

<script>
function t() {
    if(confirm("Yo")){
       var form = document.getElementById("f")

       form.submit()

    }
}
</script>