Прекращение действия формы php при нажатии кнопки подтверждения

Мы предупреждаем пользователя с помощью этого javascript, теперь я хочу добавить эту функцию в мою HTML-форму, которая отправляет данные с помощью метода post на мою страницу обработки php-формы.

Теперь я хочу прекратить действие, если пользователь нажимает кнопку отмены, это означает, что все данные, отправленные с использованием метода post, не должны отправляться, и человек не сможет обрабатывать форму до тех пор, пока он не будет нажимает на OK кнопка. Так возможно ли это? Или это просто какой-то идиотский вопрос?

<html>
<head>
<script type="text/javascript">
function show_confirm()
{
var r=confirm("Press a button!");
if (r==true)
  {
  alert("You pressed OK!");
  }
else
  {
  alert("You pressed Cancel!");
  }
}
</script>
</head>
<body>

<input type="button" onclick="show_confirm()" value="Show a confirm box" />

</body>
</html>

2 ответа

Решение

Позвоните confirm в форме отправки, а не при нажатии кнопки, и измените кнопку на кнопку отправки:

<form onsubmit="return show_confirm();">
    <input type="text" name="test" value="test"><br>
    <input type="submit" value="Show a confirm box">
</form>

Добавить return false; если cancel была нажата:

function show_confirm() {
    var r=confirm("Press a button!");
    if (r===true) {
        alert("You pressed OK!");
    } else {
        alert("You pressed Cancel!");
        return false;
    }
}

Также см. Мой пример.

Во-первых, вы должны поместить свой ajax-вызов только в раздел r===true. Тогда вы не будете отправлять какие-либо данные на сервер, если пользователь нажмет кнопку Отмена.

Во-вторых, в случае, если вы хотите прекратить действие (= вызов ajax), которое уже совершил пользователь (то есть, он нажал кнопку ОК, а вы вызвали ajax, чтобы отправить данные на ваш сервер), это будет сложнее, потому что вы потребуется код на стороне сервера, который будет выполнять "откат". Вы не можете "перехватить" данные до того, как они попадут на сервер, поэтому вы можете сделать откат, а затем проверить состояние с клиента.

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