Атрибут disabled
Атрибут disabled блокирует элемент HTML формы, то есть делает его неактивным. Является атрибутом без значения.
Блокировка элементов обычно нужна для того, чтобы запретить пользователю менять некоторые значения (которые, тем не менее, должны быть показаны пользователю в виде элементов формы). Иногда элементы блокируют (и снимают блокировку) с помощью JavaSctipt.
Поведение
В случае кнопки ( button или input с атрибутом type в значениях button , reset или submit ) блокировка означает, что на кнопку нельзя будет нажать. В случае с текстовым полем ввода ( input или textarea ) в нем нельзя будет поменять или скопировать текст. В случае с чекбоксами и радио их состояние (отмечено или нет) нельзя будет сменить. В случае с выпадающими списками select нельзя будет сменить выбранный пункт списка.
Заблокированный элемент по умолчанию имеет серый фон. Он также не будет участвовать в переходах клавишей Tab.
Пример . Заблокированная кнопка
Давайте заблокируем кнопку с помощью атрибута disabled . Для сравнения рядом пример незаблокированной кнопки (попробуем на нее нажать):
Пример . Заблокированный чекбокс
А теперь давайте посмотрим на заблокированный флажок чекбокса. Для сравнения рядом смотрим пример не заблокированного флажка:
Пример . Заблокированный и отмеченный чекбокс
Давайте посмотрим, как выглядит заблокированный и отмеченный с помощью атрибута checked флажок чекбокс. Для сравнения рядом обратимся к примеру не заблокированного отмеченного флажка:
Пример . Заблокированный текстовый инпут
А теперь давайте заблокируем инпут. Для сравнения рядом посмотрим пример не заблокированного инпута:
Пример . Заблокированный текстареа
А здесь мы увидим заблокированный текстареа (обратите внимание на то, что размер заблокированного textarea можно менять). Для сравнения рядом обратимся к примеру не заблокированного текстареа:
Пример . Заблокированный выпадающий список
Давайте посмотрим как работает заблокированный select . Для сравнения рядом посмотрим пример не заблокированного выпадающего списка:
Смотрите также
- псевдокласс disabled ,
который задает стили заблокированному элементу - псевдокласс enabled ,
который задает стили незаблокированному элементу
Курсы javascript
Наверно, я не полностью сформулировал вопрос. В Chrome и IE сразу после загрузки страницы чекбокс не выделен и поле для текста активно, по крайней мере у меня именно так. Поле становится неактивным, если поставить, а затем снять галочку.
Может я что-то не так делаю? Подскажите.
20.07.2012, 19:07
без статуса
Регистрация: 25.05.2012
Сообщений: 8,219
20.07.2012, 19:09
Регистрация: 03.05.2011
Сообщений: 848
либо так (18 строка), либо нарисуйте атрибут disabled у текстового поля изначально.
20.07.2012, 19:41
Интересующийся
Регистрация: 20.07.2012
Сообщений: 11
Спасибо, получилось с атрибутом disabled.
21.07.2012, 12:08
Интересующийся
Регистрация: 20.07.2012
Сообщений: 11
Еще возник вопрос. Если я таким образом пытаюсь включить несколько подряд инпутов, то это не работает. При этом работает, если ставить галки начиная от последнего элемента к первому по порядку. Работает только отдельно какой-либо из выбранных, а остальные неактивны. Как это реализовать?
Последний раз редактировалось nraw, 21.07.2012 в 12:27 .
21.07.2012, 12:36
Регистрация: 22.03.2012
Сообщений: 3,744
21.07.2012, 14:02
Интересующийся
Регистрация: 20.07.2012
Сообщений: 11
У меня элементы input находятся в ячейках таблицы
поэтому код не работает, а точнее работает частично (только в колонке «Количество»). Если я правильно понял, не работают эти строки?
var inp = target.parentNode.children; var len = inp.length;
Последний раз редактировалось nraw, 21.07.2012 в 14:18 .
21.07.2012, 14:28
что-то знаю
Регистрация: 24.05.2009
Сообщений: 5,176
elem.setAttribute('disabled', 'disabled'); // сделать неактивной elem.removeAttribute('disabled'); // сделать активной // кроссбраузерно
:disabled , :enabled
Эта кнопка серая. Она не доступна для клика. Как написать селектор на основе состояния элемента?
Время чтения: меньше 5 мин
Открыть/закрыть навигацию по статье
Контрибьюторы:
Обновлено 1 августа 2022
Кратко
Скопировать ссылку «Кратко» Скопировано
Псевдоклассы :disabled и :enabled помогают стилизовать интерактивные элементы — на которые можно и нельзя нажать.
Легко применяются к любым элементам, которым можно задать атрибут disabled : , , , , , , , и .
Пример
Скопировать ссылку «Пример» Скопировано
Часто требуется, чтобы на кнопку отправки формы нельзя было нажать, пока не заполнены все поля этой формы. Проще всего заблокировать кнопку атрибутом disabled . Но недостаточно просто указать его в HTML, нужно ещё и при помощи оформления показать пользователю, что кнопка не активна. Как раз для этого нам пригодится псевдокласс :disabled .
Кнопка будет полупрозрачной:
button:disabled opacity: 0.5;>button:disabled opacity: 0.5; >
Псевдокласс :enabled , наоборот, поможет стилизовать все доступные для взаимодействия элементы. По факту его чаще всего не указывают, потому что записи с ним и без него, как правило, равноценны: .input = .input : enabled .
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Любому селектору, указывающему на интерактивный элемент, дописываем двоеточие и указываем одно из ключевых слов: enabled или disabled .
Как понять
Скопировать ссылку «Как понять» Скопировано
Браузер ориентируется на атрибут disabled и, в зависимости от его наличия или отсутствия, добавляет элементу состояние enabled — доступен, или disabled — недоступен.
Подсказки
Скопировать ссылку «Подсказки» Скопировано
Даже если дизайнер забыл про неактивное состояние, обязательно прописывайте его в стилях, чуть приглушая фоновый цвет или делая элемент полупрозрачным — чтобы пользователь точно знал, что с этим элементом взаимодействовать нельзя.
enabled чаще всего не используется, потому что все интерактивные элементы по умолчанию доступны (включены). Это значит, что прописав стили для селектора .input , вы закрываете сценарий с активным элементом.
На практике
Скопировать ссылку «На практике» Скопировано
Алёна Батицкая советует
Скопировать ссылку «Алёна Батицкая советует» Скопировано
«Выключать» взаимодействие с кнопками или другими элементами формы удобнее именно атрибутом disabled , потому что он сразу же отключает возможность нажать на этот элемент без дополнительных стилей. И, ориентируясь на него, гораздо удобнее прописывать стили для неактивных элементов, используя псевдокласс disabled .
Код для кнопки из моего последнего проекта:
Стили для активной кнопки в обычном состоянии:
.additional-btn padding: 2rem 3rem; border: 1px solid currentColor; font-family: inherit; font-size: 1.6rem; color: #FF6650; text-decoration: none; background-color: transparent; transition: border 0.3s, color 0.3s; cursor: pointer; user-select: none;>.additional-btn padding: 2rem 3rem; border: 1px solid currentColor; font-family: inherit; font-size: 1.6rem; color: #FF6650; text-decoration: none; background-color: transparent; transition: border 0.3s, color 0.3s; cursor: pointer; user-select: none; >
Стили для кнопки при наведении курсора или клике:
.additional-btn:active,.additional-btn:hover color: #FF5050; transition: none;>.additional-btn:active, .additional-btn:hover color: #FF5050; transition: none; >
Стили для кнопки, когда она неактивна:
.additional-btn:disabled cursor: default; color: #A44234;>.additional-btn:disabled cursor: default; color: #A44234; >
как сделать кнопку неактивной js
Чтобы сделать кнопку неактивной, нужно добавить ей атрибут disabled :
// создаем кнопку const btn = document.createElement('button'); // добавляем ей атрибут disabled btn.setAttribute('disabled', ''); // добавляем надпись btn.textContent = 'Неактивная кнопка' // добавляем кнопку на страницу document.body.append(btn);
Кнопка будет отображаться серой и недоступной для нажатия. Кроме того, она не может получить фокус путем нажатия на клавишу Tab или другим способом.