logo
Отправка значения из отключенного поля input в форме
Документацию читаете, а по-английски говорите?
Тест Skyeng на уровень английского
Узнать свой уровень

Отправка значения из отключенного поля input в форме

#Основы HTML  #Формы  #Инпуты и типы полей  

Быстрый метод

Чтобы отправить значение неактивного поля, используйте скрытое поле. При отправке формы неактивные поля не учитываются, в отличие от скрытых.

HTML
Скопировать код
<input type="hidden" name="userCopy" value="CopiedValue">

JS
Скопировать код
document.myForm.onsubmit = () => {
  document.querySelector('[type="hidden"]').value = document.querySelector('[disabled]').value; // Применяем хитрость
};

Использование 'readonly'

Если вам нужно зафиксировать данные, например, от Google Карт, применяйте атрибут readonly. Значения будут отображаться на экране, но изменить их будет невозможно. При этом, данные успешно отправяться с формой. Забудьте о сложных методах!

HTML
Скопировать код
<input type="text" name="location" value="FetchedCoords" readonly>

Визуализация процесса передачи данных

Отправка формы напоминает эстафету. Если неактивное поле ввода остаётся позади, оно не достигнет цели:

Markdown
Скопировать код
🏃‍♂️(активное поле ввода) → 🏃‍♂️(неактивное поле ввода – держит эстафету 🏆) → 🎽(Финишная линия – Отправка формы)

Но если мы добавим скрытого участника, эстафета незаметно преодолеет финишную линию. Похоже на магию, не так ли?

Markdown
Скопировать код
🏃‍♂️(активное поле ввода) ✋🤫🤝🏃‍♂️(скрытое поле с тем же значением 🏆) → 🎽(Финишная линия – Отправка формы)

И зрители ликуют, видя, как данные достигают своей цели. 📤🎉

Таким образом, мы получили:

  • Неактивное поле: ❌ Значение не отправится с формой.
  • Поле только для чтения: ✅ Значение отправится, но его нельзя редактировать.
  • Скрытое поле: ✅ Значение отправится, не заметив его взглядом.

Организация форм с использованием readonly и скрытых полей

Выбирайте между readonly и hidden в зависимости от своих требований. Если вам нужно отобразить данные без возможности их редактирования, используйте readonly. Если данные не предназначены для отображения пользователю, применяйте скрытые поля.

Попробуем развлечься с JS, создав readonly поля с координатами:

JS
Скопировать код
function updateLocationFields(lat, lng) {
  const latField = document.getElementById('latitude');
  const lngField = document.getElementById('longitude');
  latField.value = lat; // Задаём широту
  lngField.value = lng; // Задаём долготу
  latField.readOnly = true; // Больше изменений не принимается
  lngField.readOnly = true; // Откатиться назад невозможно
}

Вот так можно скрыть данные от глаз пользователя:

HTML
Скопировать код
<input type="hidden" id="secretSauce" name="invisibleCode" value="HiddenRecipe">

Синхронизация полей readonly и скрытых

Для правильного отображения и скрытой отправки данных формы необходимо синхронизировать поля readonly и скрытые поля. Пользователь видит только readonly поля, а скрытое поле выполняет всю работу "за кулисами".

Пример скоординированной "скрытой операции":

JS
Скопировать код
function syncFields() {
  document.getElementById('hiddenLatitude').value = document.getElementById('readonlyLatitude').value; // Скрытая передача
  document.getElementById('hiddenLongitude').value = document.getElementById('readonlyLongitude').value; // Незаметная передача
}

Блокировка полей ввода при отправке формы

Заморозьте ввод данных через JavaScript в момент отправки формы для предотвращения последующих изменений. Этот метод особенно подходит для форм с несколькими этапами.

Пример замораживания полей ввода:

JS
Скопировать код
document.myForm.onsubmit = () => {
  const inputs = document.querySelectorAll('.stage-specific-input');
  inputs.forEach(input => input.disabled = true); // Все работы остановлены
};

Полезные материалы

  1. Атрибут HTML: disabled — HTML: HyperText Markup Language | MDN — MDN, всегда надёжный источник информации.
  2. Атрибут disabled элемента input HTML — W3 Schools раскрывает тонкости использования.
  3. Стандарт HTML — Погружаемся в тайны форм HTML!
  4. Валидация форм HTML5 — SitePoint — HTML5 делает формы надежнее и безопаснее.
  5. Изучение форм | web.dev — Узнайте все об управлении формами в эпоху HTML5.
  6. .prop() | Документация jQuery API — Управляйте атрибутами как профи (словно солируете на гитаре).
  7. cross browser – В чем разница между disabled="disabled" и readonly="readonly" для полей ввода форм HTML? – Stack Overflow — Углубляемся в глубины обсуждений на Stack Overflow.

Завершение

Практика приводит к совершенству в работе с формами. Если эта статья оказалась полезной, буду рад увидеть ваш отзыв. Удачного кодинга!👩‍💻

Ксения Сорокина

веб-техредактор

Свежие материалы

Загрузка...