Ранее этим утром, в приступе сильной глупости, я написал в Твиттере наблюдение о кнопках и формах сброса:
Говоря о формах, почему мы до сих пор добавляем кнопки сброса? Когда в последний раз вы * намеренно * сбрасывали форму?
— Рэймонд Камден (@raymondcamden) 3 ноября 2015 г.
Теперь, чтобы быть ясным, я не могу вспомнить, когда в последний раз я случайно очистил форму, но все же меня удивляет, когда я вижу элемент на странице. Я, честно говоря, не могу вспомнить, когда-либо хотел сбросить мою форму, и мне кажется, что это пустая трата места.
Но, конечно же, как только я написал в твиттере, я получил довольно интересные ответы, которые заставили меня пересмотреть свои мысли об этой функции в целом. Здесь они в произвольном порядке.
@raymondcamden @zeldman для раскрывающегося списка только для CSS, управляемого радиовходами , где сброс закрывает активное меню https://t.co/qAtmqPDazl
— Радослав Шарапанов (@radogado) 3 ноября 2015 г.
Хорошо, это интересная демонстрация. Если честно, всякий раз, когда я вижу, что CSS делает странные вещи с формами, я немного беспокоюсь. Кажется, это круто «крутить» вещи таким образом, но что-то в этом мне кажется неправильным. При этом я не могу выбраться из бумажного пакета с помощью CSS, так что я знаю? В конце концов, его демонстрация / использование не совсем соответствует моему первоначальному утверждению о «типичном» использовании кнопки сброса.
@raymondcamden Только в форме, используемой для фильтрации результатов поиска (чтобы вернуть ее к критериям фильтра по умолчанию).
— Дэн Скаггс (@dskaggs) 3 ноября 2015 г.
Я ответил Дэну, чтобы уточнить, что он говорил о форме, использующей Ajax, и в этом отношении — я думаю, что это имеет смысл. До тех пор, пока вы меняете значение кнопки сброса на что-то вроде «Очистить поиск», и до тех пор, пока вы очищаете результаты, я думаю, что это действительно чертовски правильное использование кнопки сброса.
И да — вы можете прослушать событие сброса. Я никогда не знал, что это существует, но есть смысл, что это так. Вот это в jQuery:
$("form").on("reset", function(e) {
console.log("reset event");
console.dir(e);
});
И да — если вы вернете false из этого события, вы можете заблокировать событие сброса. С какой стати ты так поступил? Я понятия не имею. Но вы можете.
Кроме того, если вы прослушиваете событие изменения в поле формы, даже если сброс технически изменяет значение (или может изменить значение), событие не будет запущено. Я думаю, это имеет смысл, но если вы слушаете события изменения и у вас есть кнопка сброса, вы также захотите прослушать событие сброса.
@raymondcamden Я вижу, что они чаще используются (и помечены) как «Отмена», что обычно возвращает вас обратно на страницу, а не просто очищает.
— Джордан Каспер (@jakerella) 3 ноября 2015 г.
Этот пример также имеет смысл — и вам нужно будет прослушать событие сброса, чтобы обработать его. Но, как и в случае с проблемой с выпадающим меню CSS, это похоже на небольшое нарушение назначения кнопки. Не то чтобы полиция W3C придет за тобой, но это кажется неправильным.
Не забывайте, что современные браузеры поддерживают атрибут formaction. Вы можете буквально сделать это примерно так:
<input type="submit" value="Cancel" formaction="index.html">
Это работает только на кнопки отправки, хотя. Поддержка на самом деле довольно хорошая, и статья в Wufoo описывает это: атрибут formaction .
@raymondcamden Страницы, защищенные паролем. Происходит во время тестирования и в ежедневных случаях использования для наших клиентов (работа в веб-разработчике)
— Сара Джедрей (@sejedrey) 3 ноября 2015 г.
Таким образом, мой вывод заключается в том, что клиенты Сары просят об этом на защищенных страницах. Я не понимаю, почему покупатель просил об этом — но в то же время — у меня есть глубокие знания о браузерах, которых у обычного пользователя не было бы. Видеть способ удалить данные формы одним щелчком мыши может быть обнадеживающим. И на самом деле чуть позже Бен С сказал то же самое:
@raymondcamden @zeldman Как ни странно, мы только что добавили их. Наши пользователи чувствовали себя безопаснее (в тестировании), зная, что они могут вернуться и возобновить свою работу.
— Бен С (@beseku) 3 ноября 2015 г.
Я думаю, я вижу, что это помогает пользователям чувствовать себя в безопасности. Однако, как напоминание, не забывайте, что кнопка сброса не «очищает» формы, она буквально сбрасывает ее. Так что, если ваша форма использует жестко закодированные значения, возможно, на странице «Редактировать профиль», кнопка сброса ничего не удалит с экрана. Скорее он просто вернет форму к ее первоначальным значениям.
Есть комментарии по этому поводу?