Форма HTML и подтверждение Javascript
-
20-09-2019 - |
Вопрос
У меня возникла проблема с отправкой формы и подтверждением 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 и форма не будет опубликована.