Можно ли отключить поля формы с помощью CSS? Я, конечно, знаю об отключенном атрибуте, но можно ли это указать в правиле CSS? Что-то вроде -
<input type="text" name="username" value="admin" >
<style type="text/css">
input[name=username] {
disabled: true; /* Does not work */
}
</style>
Причина, по которой я спрашиваю, состоит в том, что у меня есть приложение, в котором поля формы генерируются автоматически, а поля скрыты / показаны на основе некоторых правил (которые выполняются в Javascript). Теперь я хочу расширить его для поддержки отключения / включения полей, но способ написания правил для непосредственной манипуляции со свойствами стиля полей формы. Так что теперь мне нужно расширить механизм правил для изменения атрибутов, а также стиля полей форм, и почему-то это кажется не идеальным.
Очень любопытно, что у вас есть видимые и отображаемые свойства в CSS, но вы не можете включать / отключать. Есть ли что-то подобное в стандарте HTML5, который все еще работает, или даже что-то нестандартное (специфично для браузера)?
Ответы:
Это может быть полезно:
Обновить:
и если вы хотите отключить индекс табуляции, вы можете использовать его следующим образом:
источник
Вы можете подделать отключенный эффект, используя CSS.
Вы также можете изменить цвета и т. Д.
источник
Поскольку правила выполняются в JavaScript, почему бы не отключить их с помощью javascript (или, в моем случае, jQuery)?
ОБНОВИТЬ
Эта
attr
функция больше не является основным подходом к этому, как было указано в комментариях ниже. Теперь это сделано с помощьюprop
функции.источник
.prop()
вместо.attr()
этого случая. "Начиная с jQuery 1.6, метод .attr () возвращает неопределенное значение для атрибутов, которые не были установлены. Чтобы получить и изменить свойства DOM, такие как проверенное, выбранное или отключенное состояние элементов формы, используйте метод .prop (). " Исходная документация: .attr () и .prop ()Это очень любопытно, что вы думаете, что это очень любопытно. Вы неправильно понимаете цель CSS. CSS не предназначен для изменения поведения элементов формы. Он предназначен только для изменения их стиля . Скрытие текстового поля не означает, что текстовое поле больше не существует или что браузер не отправит свои данные при отправке формы. Все, что он делает, это скрывает это от глаз пользователя.
Чтобы фактически отключить ваши поля, вы должны использовать
disabled
атрибут в HTML илиdisabled
свойство DOM в JavaScript.источник
pointer-events
чтобы быть CSS-свойством. К вашему сведению,pointer-events
происходит из SVG .Вы не можете использовать CSS, чтобы отключить Textbox. решением будет HTML атрибут.
источник
disabled
атрибутом не отправляются - их значения не публикуются на сервере. Читайте дальше: stackoverflow.com/q/8925716/1066234Практическое решение - использовать CSS, чтобы фактически скрыть ввод.
Чтобы сделать это естественным образом, вы можете написать два html-ввода для каждого фактического ввода (один включен, а другой отключен), а затем использовать javascript для управления CSS, чтобы показать и скрыть их.
источник
впервые отвечая на что-то, и, казалось бы, немного поздно ...
Я согласен сделать это с помощью JavaScript, если вы уже используете его.
Для составной структуры, которую я обычно использую, я создал псевдо-элемент css, чтобы заблокировать элементы от взаимодействия с пользователем и разрешить стилизацию, не манипулируя всей структурой.
Например:
Я могу разместить
disabled
класс на упаковкеdiv
Это будет серый текст внутри
div
и сделает его непригодным для использования пользователем.Мой пример JSFiddle
источник
Я всегда использую:
и затем применение класса css к полю ввода:
источник
Я знаю, что этот вопрос довольно старый, но для других пользователей, которые сталкиваются с этой проблемой, я полагаю, что самый простой способ отключить ввод - просто:: disabled
В действительности, если у вас есть сценарий для динамического / автоматического отключения ввода с помощью javascript или jquery, который автоматически отключается в зависимости от добавленного вами условия.
В jQuery для примера:
Надеюсь, ответ в CSS поможет.
источник
Боюсь, вы не можете этого сделать, но вы можете сделать следующее в jQuery, если вы не хотите добавлять атрибуты в поля. Просто поместите это в свой
<head></head>
тегЕсли вы генерируете поля в DOM (с помощью JS), вы должны сделать это вместо этого:
источник
Это можно сделать для некритических целей, поместив наложение поверх элемента ввода. Вот мой пример в чистом HTML и CSS.
https://jsfiddle.net/1tL40L99/
источник
Нет способа использовать CSS для этой цели. Мой совет - включить код JavaScript, где вы назначаете или изменяете класс css, применяемый к входным данным. Что-то такое :
источник
Разновидность к
pointer-events: none;
решению, которое решает вопрос о входной еще быть доступным через это меченый контроль или TabIndex, чтобы обернуть ввод в DIV, который стилизован инвалидом ввода текста и настройкиinput { visibility: hidden; }
при входе «отключен» ,Ссылка: https://developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
Отключенный стиль, примененный в приведенном выше фрагменте, взят из пользовательского интерфейса Chrome и может не совпадать визуально с отключенными входами в других браузерах. Возможно, его можно настроить для отдельных браузеров, используя специфичные для движка CSS-префиксы. Хотя на первый взгляд, я не думаю , что он может:
расширения Microsoft CSS , Mozilla расширений CSS , WebKit CSS расширений
Казалось бы, гораздо более разумно ввести дополнительное значение
visibility: disabled
или,display: disabled
возможно, дажеappearance: disabled
, учитывая, что этоvisibility: hidden
уже влияет на поведение применимых элементов любых связанных элементов управления.источник