Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - Дивовижний світ веброзробки
Added 06 Dec 2025

Дивовижний світ веброзробки

@babichdev
Number of subscribers: 2 977
Photos: 103
Videos: 7
Links: 253
Description:
Дивовижний світ веброзробки — тепер і в твоєму телеграмі. Анонси відео з YouTube-каналу «Сергій Бабіч та Дивовижний світ веброзробки», стріми, авторські статті та цікаві знахідки. youtube.com/@babichweb Реклами та інтеграції обговоримо
Source

Дивовижний світ веброзробки | html_in_actionЗдається, що існував завжди. Відверто, з точки зору біль...

Telegram community logo - Дивовижний світ веброзробки Дивовижний світ веброзробки @babichdev
1 920 Views/Reach 2026-03-25 06:47 Message №347
#html_in_actionЗдається, що <button> існував завжди. Відверто, з точки зору більшости веброзробників, так і є. Цей тег зʼявився в специфікації HTML 4.0 1997 року, і старший за багатьох з моїх любих читачів.А ще ми нерозривно повʼязуємо його з формами, адже як іще можна надіслати дані з нашої сторінки, як не за допомогою <button>? І ось ці два моменти часто складаються в хибну думку, що кнопки зʼявилися в HTML разом з формами, і є їхньою невідʼємною частиною. Чому ж ця думка хибна?Річ у тім, що форми випереджають <button> на цілих два роки і дві версії HTML: вони зʼявляються в стандарті HTML 2.0 від 1995 року. І це вже спростовує другу тезу про невідʼємність кнопки від форми.А як же так сталося, і як відправлялися форми в той час? Дуже просто — input. Кнопки як окремого примітива чи сутності не було, а бідолашний інпут віддувався за все, що не було select чи textarea. І саме тоді й зʼявилися різні типи інпутів, серед яких були й submit, reset та button.До речі, про reset я й сам чи то не знав, чи то забув до цього часу. Він, виявляється, скидає стан форми до значень за замовчуванням.input цілком собі вдало виконував функції кнопки, але button, як я зазначив на початку, досить швидко зʼявився в специфікації. Не братимусь розбирати причини, але вони, як на мене, доволі очевидні з різниці між інпутом і кнопкою.Якщо дуже стисло окреслити різницю між button та input, то всередину button можна додавати розмітку, а всередину input — не можна.Тепер поглянемо на типи: submit, reset, button.submit є значенням атрибуту type за замовчуванням, і саме тому будь-яка кнопка без явного значення цього атрибуту, поміщена всередину форми, буде її "сабмітити". Я певен, що кожен з нас бодай раз стикався з цією поведінкою, і Ґуґл памʼятає саме ваш запит "button form prevent submit".Я памʼятаю, наскільки це дратувало. Але зараз розумію, що це роздратування насправді було викликано не якоюсь не такою поведінкою кнопки, а саме моїм незнанням та нерозумінням, як вона насправді працює.Виправити таку поведінку дуже просто — явно вказати type="button". І тоді наша кнопка перетвориться на… кнопку-кнопку. Саме той інтерактивний примітив, про який я говорив минулого разу. В цьому випадку бравзер прибирає з кнопки "очікувану" поведінку в контексті форм. Якщо простіше, то кнопка більше не сабмітить.Про type="reset" я вже побіжно згадав, і тут немає ніяких підводних каменів — просто скидання стану до початкових значень.Є ще один цікавий момент, про який я колись розповідав: кнопку можна звʼязати з формою через атрибут form, і тоді її можна розмістити поза нею, і все працюватиме. Так от. Виявляється, ця поведінка притаманна усім елементам форми, не лише кнопкам. Але я розберу цей курйоз іншим разом.Тож, якщо підбити підсумки:- Кнопки — логічне продовження інтерактивності, закладеної input;- Мають три значення атрибуту type: submit, reset, button;- За замовчуванням тип кнопки — submit;- Якщо треба кнопка всередині форми, що має робити щось інше, то це type="button"Але HTML не стоїть на місці, і сьогодні button вміє набагато більше, ніж сабмітити форму і бути безвольним гачком, до якого ми чіпляємо свої onClick. Про що мова? Можливо, ви вже здогадалися, тож пишіть в коментарях. А я вже готую наступний допис.MDN: button type@babichdev***Збір на РЕБ для 115 ОМБр: зібрано 30 731 / 300 000грн. Долучайтесь!