HTML-форма и подтверждение Javascript - PullRequest
4 голосов
/ 31 августа 2009

У меня проблема с отправкой формы и подтверждением Javascript. По сути, следующий Javascript вызывается при нажатии кнопки «отправить».

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        window.location = "#editform2";
    }
}

Однако, когда я нажимаю «Отмена» вместо «ОК», Javascript выполняется правильно, потому что я смотрю адресную строку, и она не обновляется до # editform2. Форма, однако, все еще подчиняется. Кажется, чтобы обновить страницу. Вот соответствующие части из формы:

//Form is encoded in PHP
<form method=\"post\">
//Form is in here
<input type=\"submit\" value=\"Edit\" onclick=\"confirmation()\">

Таким образом, форма не знает, куда она движется, она просто обновляет страницу, и страница оказывается также процессором. Так что он обрабатывается, хотя я нажал «Отмена», и Javascript должен держать его на той же странице. Помимо переноса обработки на другую страницу, каковы мои решения?

Ответы [ 3 ]

6 голосов
/ 31 августа 2009

Это работает так, потому что это кнопка sumbit, и форма отправляется в каждом случае. Присвойте идентификатор форме и измените тип ввода:

<form method="post" id="formid">
<input type="button" value="Edit" onclick="confirmation()">

и вызовите эту функцию при нажатии:

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        document.getElementById("formid").submit();
    }
}
4 голосов
/ 31 августа 2009

Не используйте событие onclick кнопки отправки, используйте событие onsubmit вашей формы:

document.forms[0].onsubmit = function () {
    return confirm("Are you sure you wish to edit?");
}

Возможно, вы захотите добавить атрибут id в вашу форму, чтобы идентифицировать его.

Сохранение привязки событий к коду JavaScript; не встроенные атрибуты в вашем HTML, делают ваш код более удобным и легко отлаживаемым.

1 голос
/ 31 августа 2009

попробовать:

return answer;

в конце функции и убедитесь, что метод onclick возвращает это. Вот так:

<input type="submit" value="Edit" onclick="return confirmation()">

Это заставит функцию возвращать false и не будет отправлять форму.

...