прекращение действия формы php при нажатии кнопки подтверждения - PullRequest
0 голосов
/ 02 апреля 2012

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

1 голос
/ 02 апреля 2012

Вызовите 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;
    }
}

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

1 голос
/ 02 апреля 2012

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

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

...