Est-il possible de désactiver les champs de formulaire en utilisant CSS? Je connais bien sûr l'attribut désactivé, mais est-il possible de le spécifier dans une règle CSS? Quelque chose comme -
<input type="text" name="username" value="admin" >
<style type="text/css">
input[name=username] {
disabled: true; /* Does not work */
}
</style>
La raison pour laquelle je demande est que j'ai une application où les champs du formulaire sont générés automatiquement et les champs sont masqués / affichés en fonction de certaines règles (qui s'exécutent en Javascript). Maintenant, je veux l'étendre pour prendre en charge la désactivation / l'activation des champs, mais la façon dont les règles sont écrites pour manipuler directement les propriétés de style des champs de formulaire. Alors maintenant, je dois étendre le moteur de règles pour modifier les attributs ainsi que le style des champs de formulaire et cela semble loin d'être idéal.
Il est très curieux que vous ayez des propriétés visibles et d'affichage dans CSS mais pas d'activation / désactivation. Y a-t-il quelque chose de similaire dans le standard HTML5 encore sous-fonctionnel, ou même quelque chose de non standard (spécifique au navigateur)?
Réponses:
Cela peut être utile:
Mettre à jour:
et si vous souhaitez désactiver l'index des onglets, vous pouvez l'utiliser de cette façon:
la source
Vous pouvez simuler l'effet désactivé en utilisant CSS.
Vous pouvez également changer les couleurs, etc.
la source
Puisque les règles s'exécutent en JavaScript, pourquoi ne pas les désactiver en utilisant javascript (ou dans mon cas d'exemples, jQuery)?
METTRE À JOUR
La
attr
fonction n'est plus l'approche principale à cet égard, comme cela a été souligné dans les commentaires ci-dessous. Ceci est maintenant fait avec laprop
fonction.la source
.prop()
au lieu de.attr()
pour ce cas. "Depuis jQuery 1.6, la méthode .attr () renvoie undefined pour les attributs qui n'ont pas été définis. Pour récupérer et modifier les propriétés DOM telles que l'état vérifié, sélectionné ou désactivé des éléments de formulaire, utilisez la méthode .prop (). " Documentation source: .attr () et .prop ()C'est très curieux que vous trouviez cela très curieux. Vous ne comprenez pas le but du CSS. CSS n'est pas destiné à modifier le comportement des éléments de formulaire. Il est destiné à changer leur style uniquement. Masquer un champ de texte ne signifie pas que le champ de texte n'est plus là ou que le navigateur n'enverra pas ses données lorsque vous soumettez le formulaire. Tout ce qu'il fait, c'est le cacher aux yeux de l'utilisateur.
Pour désactiver réellement vos champs, vous devez utiliser l'
disabled
attribut en HTML ou ladisabled
propriété DOM en JavaScript.la source
pointer-events
être une propriété CSS. FYI,pointer-events
provient de SVG .Vous ne pouvez pas utiliser CSS pour désactiver Textbox. la solution serait l'attribut HTML.
la source
disabled
attribut ne sont pas soumis - leurs valeurs ne sont pas publiées sur le serveur. À lire: stackoverflow.com/q/8925716/1066234La solution pratique consiste à utiliser CSS pour masquer réellement l'entrée.
Pour amener cela à sa conclusion naturelle, vous pouvez écrire deux entrées html pour chaque entrée réelle (une activée et une désactivée), puis utiliser javascript pour contrôler le CSS pour les afficher et les masquer.
la source
première réponse à quelque chose, et apparemment juste un peu tard ...
J'accepte de le faire en javascript, si vous l'utilisez déjà.
Pour une structure composite, comme j'utilise habituellement, j'ai créé un pseudo après élément css pour bloquer les éléments de l'interaction de l'utilisateur et permettre le style sans avoir à manipuler toute la structure.
Par exemple:
Je peux placer une
disabled
classe sur l'emballagediv
Cela griserait le texte dans le
div
et le rendrait inutilisable pour l'utilisateur.Mon exemple JSFiddle
la source
J'utilise toujours:
puis en appliquant la classe css au champ de saisie:
la source
Je sais que cette question est assez ancienne, mais pour les autres utilisateurs qui rencontrent ce problème, je suppose que le moyen le plus simple de désactiver l'entrée est simplement de ": disabled"
En réalité, si vous avez un script pour désactiver l'entrée dynamiquement / automatiquement avec javascript ou jquery, cela désactiverait automatiquement en fonction de la condition que vous ajoutez.
Dans jQuery par exemple:
J'espère que la réponse en CSS vous aidera.
la source
Vous ne pouvez pas faire cela, j'en ai peur, mais vous pouvez faire ce qui suit dans jQuery, si vous ne voulez pas ajouter les attributs aux champs. Placez-le simplement dans votre
<head></head>
étiquetteSi vous générez les champs dans le DOM (avec JS), vous devez le faire à la place:
la source
Cela peut être fait dans un but non critique en plaçant une superposition au-dessus de votre élément d'entrée. Voici mon exemple en HTML et CSS pur.
https://jsfiddle.net/1tL40L99/
la source
Il n'y a aucun moyen d'utiliser CSS à cette fin. Mon conseil est d'inclure un code javascript où vous attribuez ou modifiez la classe css appliquée aux entrées. Quelque chose comme ca :
la source
Une variante de la
pointer-events: none;
solution, qui résout le problème de l'entrée toujours accessible via son étiquetage control ou tabindex, consiste à envelopper l'entrée dans un div, qui est stylé comme une entrée de texte désactivée, et à définirinput { visibility: hidden; }
lorsque l'entrée est "désactivée" .Réf: https://developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
Le style désactivé appliqué dans l'extrait de code ci-dessus provient de l'interface utilisateur de Chrome et peut ne pas être visuellement identique aux entrées désactivées sur d'autres navigateurs. Il peut éventuellement être personnalisé pour des navigateurs individuels en utilisant des préfixes d'extension CSS spécifiques au moteur. Bien un coup d' oeil, je ne pense pas qu'il pourrait: les
extensions Microsoft CSS , extensions Mozilla CSS , extensions WebKit CSS
Il semble beaucoup plus judicieux d'introduire une valeur supplémentaire
visibility: disabled
oudisplay: disabled
peut - être mêmeappearance: disabled
, étant donné quevisibility: hidden
affecte déjà le comportement des éléments applicables des éléments de contrôle associés.la source