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

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

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

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

HTML
Скопировать код
<input type="hidden" name="userCopy" value="CopiedValue">
JS
Скопировать код
document.myForm.onsubmit = () => {
  document.querySelector('[type="hidden"]').value = document.querySelector('[disabled]').value; // Применяем хитрость
};
Кинга Идем в IT: пошаговый план для смены профессии

Использование '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.

Завершение

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