Comment appliquer un style à une zone de saisie vide? Si l'utilisateur tape quelque chose dans le champ de saisie, le style ne doit plus être appliqué. Est-ce possible en CSS? J'ai essayé ceci:
input[value=""]
css
input
css-selectors
Sjoerd
la source
la source
Dans les navigateurs modernes, vous pouvez utiliser
:placeholder-shown
pour cibler l'entrée vide (à ne pas confondre avec::placeholder
).Plus d'informations et support du navigateur: https://css-tricks.com/almanac/selectors/p/placeholder-shown/
la source
Il n'y a pas de sélecteur dans CSS qui fait cela. Les sélecteurs d'attributs correspondent aux valeurs d'attribut et non aux valeurs calculées.
Vous devrez utiliser JavaScript.
la source
:empty
le sélecteur ne fonctionne que sur les éléments vides, c'est-à-dire uniquement sur les éléments qui ont une balise d'ouverture et de fermeture vide entre les deux, et des éléments de balise unique qui sont considérés comme toujours vides, par exemple , il ne peut donc pas être utilisé sur les éléments d'entrée sauftextarea
La mise à jour de la valeur d'un champ ne met pas à jour son attribut value dans le DOM, c'est pourquoi votre sélecteur correspond toujours à un champ, même s'il n'est pas réellement vide.
Utilisez plutôt la
invalid
pseudo-classe pour obtenir ce que vous voulez, comme ceci:la source
input[value=""], input:not([value])
marche avec:
Mais le style ne changera pas dès que quelqu'un commencera à taper (vous avez besoin de JS pour cela).
la source
input[value=""], input:not([value])
.Si l' appui des navigateurs existants ne sont pas nécessaires, vous pouvez utiliser une combinaison de
required
,valid
etinvalid
.La bonne chose sur l' utilisation de c'est
valid
etinvalid
pseudo-éléments fonctionnent bien avec les attributs de type de champs d'entrée. Par exemple:Pour référence, JSFiddle ici: http://jsfiddle.net/0sf6m46j/
la source
dans jQuery. J'ai ajouté une classe et stylisé avec css.
la source
Cela a fonctionné pour moi:
Pour le HTML, ajoutez l'
required
attribut à l'élément d'entréePour le CSS, utilisez le
:invalid
sélecteur pour cibler l'entrée videRemarques:
required
from w3Schools.com : "Lorsqu'il est présent, il spécifie qu'un champ de saisie doit être rempli avant de soumettre le formulaire."la source
Cette question a peut-être été posée il y a quelque temps, mais comme j'ai récemment abordé ce sujet à la recherche d'une validation de formulaire côté client et que le
:placeholder-shown
support s'améliore, j'ai pensé que ce qui suit pourrait aider les autres.Utilisation de Berend idée de d'utiliser cette pseudo-classe CSS4, j'ai pu créer une validation de formulaire déclenchée uniquement après que l'utilisateur ait fini de le remplir.
Voici ademo et explication sur CodePen: https://codepen.io/johanmouchet/pen/PKNxKQ
la source
Cela a fonctionné pour moi d'ajouter un nom de classe à l'entrée, puis d'appliquer des règles CSS à cela:
la source
Si vous êtes satisfait de ne pas prendre en charge IE ou pré-Chromium Edge (ce qui peut convenir si vous l'utilisez pour une amélioration progressive), vous pouvez utiliser
:placeholder-shown
comme l'a dit Berend. Notez que pour Chrome et Safari, vous avez en fait besoin d'un espace réservé non vide pour que cela fonctionne, bien qu'un espace fonctionne.la source
Je suis surpris par les réponses que nous avons un attribut clair pour obtenir des zones de saisie vides, jetez un œil à ce code
METTRE À JOUR
De plus pour avoir un bon aperçu de la validation
la source
:empty
s'applique uniquement aux éléments qui n'ont pas d'enfants. Les entrées ne peuvent pas du tout avoir de nœuds enfants, donc votre entrée sera toujours avec une bordure rouge. Voir aussi ce commentairevalue
ne modifie pas le nombre de nœuds enfants.<parent><child></child></parent>
). Vous avez juste<input></input>
et au fur et à mesure que vous tapez, ce qui change n'est pas un<value>
nœud à l'intérieur<input>
mais un attribut de valeur :<input value='stuff you type'></input>
Je me rends compte que c'est un fil très ancien, mais les choses ont un peu changé depuis et cela m'a aidé à trouver la bonne combinaison de choses dont j'avais besoin pour résoudre mon problème. Alors j'ai pensé partager ce que j'ai fait.
Le problème était que je devais avoir le même CSS appliqué pour une entrée facultative si elle était remplie, comme je l'avais fait pour un obligatoire rempli. Le css utilisait la classe psuedo: valid qui appliquait le css sur l'entrée facultative également lorsqu'elle n'était pas remplie.
C'est ainsi que je l'ai réparé;
HTML
CSS
la source