170 votes

Correspondance d'une boîte de saisie vide en utilisant CSS

Comment appliquer un style à une zone de saisie vide? Si l'utilisateur tape quelque chose dans le champ de saisie, le style ne devrait plus être appliqué. Est-ce possible en CSS? J'ai essayé ceci:

input[value=""]

12voto

jessica Points 121

Je réalise que ce fil de discussion est 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 appliquer le même css pour une entrée facultative si elle était remplie, comme pour une entrée requise remplie. Le css utilisait la classe pseudo :valid qui appliquait le css également à l'entrée facultative même lorsqu'elle n'était pas remplie.

Voici comment j'ai résolu le problème :

HTML

CSS

input:required:valid {
    ....
}
input:optional::not(:placeholder-shown){
    ....
}

11voto

Si le support des anciens navigateurs n'est pas nécessaire, vous pourriez utiliser une combinaison de required, valid et invalid.

La bonne chose à propos de l'utilisation de cela est que les pseudo-éléments valid et invalid fonctionnent bien avec les attributs de type des champs de saisie. Par exemple :

input:invalid, textarea:invalid { 
    box-shadow: 0 0 5px #d45252;
    border-color: #b03535
}

input:valid, textarea:valid {
    box-shadow: 0 0 5px #5cd053;
    border-color: #28921f;
}

Pour référence, JSFiddle ici : http://jsfiddle.net/0sf6m46j/

9voto

Ariella Points 263

Cela a fonctionné pour moi :

Pour le HTML, ajoutez l'attribut required à l'élément input

Pour le CSS, utilisez le sélecteur :invalid pour cibler l'input vide

input.my-input-element:invalid {

}

Notes :

  • A propos de required depuis w3Schools.com : "Lorsqu'il est présent, il spécifie qu'un champ de saisie doit être rempli avant de soumettre le formulaire."

8voto

Israel Morales Points 1
$('input#edit-keys-1').blur(function(){
    tmpval = $(this).val();
    if(tmpval == '') {
        $(this).addClass('empty');
        $(this).removeClass('not-empty');
    } else {
        $(this).addClass('not-empty');
        $(this).removeClass('empty');
    }
});

dans jQuery. J'ai ajouté une classe et stylisé avec du css.

.empty { background:none; }

7voto

DeFeNdog Points 611

Cela a fonctionné pour moi en ajoutant une classe au champ de saisie, puis en appliquant des règles CSS à celui-ci :

input[value=""].product {
    display: none;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X