Вопрос

У меня возникла проблема с отправкой формы и подтверждением 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 должен сохранить ее на той же странице.Какие у меня есть решения, помимо перемещения обработки на другую страницу?

Это было полезно?

Решение

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

<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();
    }
}

Другие советы

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

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

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

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

пытаться:

return answer;

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

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

Это приведет к тому, что функция вернет false и форма не будет опубликована.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top