Отключение возможности ввода в поле input с JavaScript

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

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

Быстрый ответ

Для того чтобы деактивировать элемент <input type="text">, используйте атрибут disabled:

HTML
Скопировать код
<input type="text" disabled>

Такое поле ввода будет выглядеть затемнённым и станет недоступным для взаимодействия. Таким образом, ваше поле ввода заслуженно отправляется в отпуск! 🎉

Если вы требуется более тонкого управления, можно обратиться к JavaScript. Достаточно установить свойство disabled в значение true:

JS
Скопировать код
document.getElementById('foo').disabled = true;
Кинга Идем в IT: пошаговый план для смены профессии

Дилемма 'disabled' против 'readOnly'

В чём же различия между этими атрибутами и почему это важно? Использование disabled делает элемент нередактируемым и исключает его из процесса отправки формы. Во-вторых, вместе с readOnly вы можете передавать данные при отправке формы, но при этом запрещать пользователям вносить в них изменения.

Чтобы сделать поле ввода доступным только для чтения с использованием JavaScript, примените следующие команды:

JS
Скопировать код
document.getElementById('foo').readOnly = true; // Теперь данные можно только просматривать

Как выбрать между 'disabled' и 'readOnly'?

Используйте disabled, если необходимо полностью деактивировать поле и исключить его из отправки формы. readOnly подходит для случаев, когда данные поля должны участвовать в отправке, но быть при этом неизменными для пользователя.

Визуализация блокировки ввода

Считайте активный <input type="text"> открытым замком. 🔓📝 Когда мы добавляем disabled:

HTML
Скопировать код
<input type="text" disabled>

Мы получаем закрытый на замок ввод, к которому доступ закрыт: 🔒📝 Пользователь больше не сможет "заполнять" ваши поля ввода.

Отображение неизменяемых данных? Используйте элементы, отличные от input

В некоторых случаях оказывается лучше использовать для отображения данных не <input>, а такие элементы как <span> или даже <div>, если они не предполагают редактирования.

Это будет способствовать целостности данных, особенно если они извлечены из базы данных, а также усилит стабильность макета и ясность намерений для пользователя.

Стилизация неизменяемых полей

Применение стиля к disabled или readOnly полям может повысить удобство использования. Например, можно изменить цвет фона и текста для выделения таких полей:

CSS
Скопировать код
input[disabled], input[readOnly] {
  background-color: #e0e0e0; // Серый цвет, символизирующий "отдых" поля
  color: #686868; // Текст в более тёмном оттенке, для его лучшей читабельности
}

Если вы используете не-input элементы для статичных данных, стилизация должна соответствовать остальному дизайну формы или страницы, явно подчёркивая, что эти данные не предназначены для изменения.

Мгновенное деактивирование ввода для повышения безопасности

Для обеспечения безопасной обработки данных в чувствительных формах можно деактивировать поля ввода сразу после загрузки страницы:

JS
Скопировать код
window.onload = function() {
  document.getElementById('foo').disabled = true; // Деактивированное сразу после загрузки
};

Учитывайте динамические данные ваших полей ввода

Если поля ввода заполняются динамическими данными, например, из базы данных, убедитесь, что вы проверили данные прежде чем применять disabled или readOnly:

JS
Скопировать код
window.onload = function() {
  var myInput = document.getElementById('foo');

  if(/* проверка условий */) {
    myInput.disabled = true;
  }
};

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

  1. HTML input disabled Attribute — Руководство W3Schools по деактивации элементов input в HTML.
  2. input: The Input (Form Input) element — Глубокий расклад элемента <input> на MDN, включающий информацию о его деактивации.
  3. What's the difference between disabled and readonly for HTML form input fields? — Обсуждение разницы между атрибутами disabled и readOnly на Stack Overflow.
  4. WebAIM: Creating Accessible Forms — Обзор воздействия деактивированных элементов на доступность веб-сайта.
  5. "input types" | Can I use... — Таблицы совместимости различных типов input в браузерах.
  6. Form validation using HTML and JavaScript — Урок от GeeksforGeeks по валидации форм с использованием HTML и JavaScript.