Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > HTML и CSS
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2023, 23:41   #1
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию Кнопка "Отмена" в HTML-форме

Допустим, в форме есть поля, обязательные для заполнения, и пара кнопок: Сохранить и Отмена. Как реализовать кнопку "Отмена"?

Можно сделать переход на заданный URL без отправки формы, типа так:
Код:
<form action="..." method="post">
Обязательное поле: <input type="text" name="example" required autofocus><br>
<input type="submit" value="Сохранить">
<input type="button" value="Отмена" onclick="document.location.href='...'">
</form>
В принципе, такой прием работает. Но что, если при нажатии "Отмена" нам в любом случае надо выполнить некие действия, то есть надо, чтобы нажатая кнопка определялась на самом сервере? Можно сделать две кнопки submit:
Код:
<form action="..." method="post">
Обязательное поле: <input type="text" name="example" required autofocus><br>
<input type="submit" name="save" value="Сохранить">
<input type="submit" name="cancel" value="Отмена">
</form>
Теперь на сервере можно понять, какая из кнопок была нажата:
Код:
if ( isset($_POST["cancel"] ){
  // отменяем...
} else {
  // сохраняем...
}
Но тут есть проблема, так как у нас имеется обязательное (атрибут required) поле example. Браузер не даст отправить форму, если пользователь не заполнит это поле. И правильно, когда нажимаем кнопку "Сохранить", поле обязано быть заполнено.

НО! Когда нажимаем кнопку "Отмена", поле может быть пустым, тут-то нам проверка уже не нужна. Но браузер все равно не даст даже нажать отмену, пока не заполним это поле.

Так вот в итоге назрел вопрос: а как это обойти? Как сделать, чтобы при нажатии одной кнопки (Сохранить) была проверка обязательных полей, но при нажатии другой (Отмена) проверка не проводилась?

Последний раз редактировалось Arigato; 09.02.2023 в 23:43.
Arigato вне форума Ответить с цитированием
Старый 10.02.2023, 00:58   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А если использовать у кнопки "отмена" formaction formnovalidate на другой url и тип отличный от submit

Последний раз редактировалось macomics; 10.02.2023 в 01:14.
macomics вне форума Ответить с цитированием
Старый 10.02.2023, 10:42   #3
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 484
По умолчанию

Странный вопрос.
А зачем вообще нужна кнопка Отмена? Опиши саму её сущьность, при каких обстоятельствах её нужно нажимать? Может тут нужен type="reset"?

Цитата:
Сообщение от Arigato Посмотреть сообщение
НО! Когда нажимаем кнопку "Отмена", поле может быть пустым, тут-то нам проверка уже не нужна. Но браузер все равно не даст даже нажать отмену, пока не заполним это поле.
Кнопка - это не обязательно input - это может быть и button и ссылка стилизованная под кнопку ну и в конце концов кнопки могут принадлежать разным формам.
Valick вне форума Ответить с цитированием
Старый 10.02.2023, 12:08   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
А если использовать у кнопки "отмена" formnovalidate
Да, такое решение устроит. Примерно так будет выглядеть код:
Код:
<form action="..." method="post">
Обязательное поле: <input type="text" name="example" required autofocus><br>
<input type="submit" name="save" value="Сохранить">
<input type="submit" formnovalidate name="cancel" value="Отмена">
</form>
Цитата:
Сообщение от Valick Посмотреть сообщение
А зачем вообще нужна кнопка Отмена? Опиши саму её сущьность, при каких обстоятельствах её нужно нажимать? Может тут нужен type="reset"?
reset сбрасывает поля, это другое. А кнопка "Отмена" нужна для отмены действия. Например, открываем какие-либо данные для редактирования и передумали их изменять. Внизу две кнопки: Сохранить и Отмена. Нажимаем "Отмена".
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кнопка с "выпадающим" календарем в форме Подруга Тигры Microsoft Office Access 2 29.06.2011 14:01
Кнопка "отмена" последних действий Malyava Помощь студентам 1 11.03.2011 19:21
Не работает кнопка "листания" SPINBUTTON в форме serafim09 Microsoft Office Excel 5 10.03.2010 13:33
Динамическая память или кнопка "Отмена" и "Назад" Ilnour1986 Microsoft Office Excel 2 27.10.2009 04:49
MsgBox кнопка "Отмена" Siver Microsoft Office Excel 4 23.12.2008 20:10