Форма подтверждения при отправке - PullRequest
3 голосов
/ 01 февраля 2012

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

Вот мой элемент формы:

<form action="manager.php?method=update&id=<?php echo $user->id;?>" onsubmit="return confirm_update();"  method="POST" id="user_update"> 

Это вызывает мою функцию confirm_update()

function confirm_update()
{
  if(confirm("Do you wish to update details?"))
  {
    return 0;
  }
  else
  {
    return 1;
  }
}

Проблема со сценарием состоит в том, что он не препятствует отправке формы POSTing, если пользователь нажимает Cancel в приглашении JavaScript.

Как исправить это, чтобы пользователь случайно не отправил своиform?

Вот полное описание функции, которую я пытаюсь реализовать:

Вариант использования - «Обновить данные»

  • Пользователь переходит на страницу обновления
  • Пользователь вводит данные в поля формы
  • Пользователь нажимает кнопку отправки
  • Появляется подтверждающее сообщение
  • Если выбрана кнопка «ОК», переходите котправить форму
  • Иначе отменить действие и остаться на текущей странице

Ответы [ 5 ]

10 голосов
/ 01 февраля 2012

Вместо возврата 0 и 1 верните true и false. Вы можете сократить функцию до:

function confirm_update() {
    return confirm("Are you sure you want to submit?");
}
2 голосов
/ 01 февраля 2012

Вы делаете это наоборот!

if(confirm("Do you wish to update details?"))
{
    return 1;
}
else
{
    return 0;
}

Сказав это, ваш код можно сократить до одной строки:

return confirm("Hit OK to continue, Cancel to... cancel.");
1 голос
/ 01 февраля 2012

Прежде всего вы должны пересмотреть свой подход.Вместо того, чтобы спрашивать, хочет ли пользователь отправить потенциально неполную или недействительную форму, вы должны использовать javascript для предотвращения этого, то есть выполнить проверку на стороне клиента с помощью js.То, что вы делаете, по сути, делается нажатием кнопки отправки ...

Если вы хотите сохранить свой подход, вы должны запретить кнопке отправки фактически отправлять данные в указанное действие, например, путем изменения формы.действие для "#" через javascript и затем инициировать отправку, если нажата кнопка ok с вашим js-кодом, например, с помощью XmlHttpRequest.

1 голос
/ 01 февраля 2012

Я бы сделал onclick, возвращая false по умолчанию, это работает для меня

<form action="manager.php?method=update&id=<?php echo $user->id;?>"  method="POST" id="user_update"> 
<input type='submit' onclick="return confirm('Do you wish to update details?');return false;"/>
</form>
1 голос
/ 01 февраля 2012

Попробуйте:


function confirm_update() {
    if(confirm("Do you wish to update details?")) {
        return true;
    }
    else {
        return false;
    }
}

...