J'ai un formulaire dans lequel je voudrais que tous les champs soient remplis. Si un champ est cliqué puis non rempli, je voudrais afficher un fond rouge.
Voici mon code:
$('#apply-form input').blur(function () {
if ($('input:text').is(":empty")) {
$(this).parents('p').addClass('warning');
}
});
Il applique la classe d'avertissement quel que soit le champ rempli ou non.
Qu'est-ce que je fais mal?
jquery
validation
Keith Donegan
la source
la source
Réponses:
Et vous n'avez pas nécessairement besoin de
.length
voir si c'est le cas,>0
car une chaîne vide est évaluée à false de toute façon, mais si vous le souhaitez à des fins de lisibilité:Si vous êtes sûr qu'il fonctionnera toujours sur un élément de champ de texte, vous pouvez simplement l'utiliser
this.value
.Vous devez également noter que
$('input:text')
saisit plusieurs éléments, spécifiez un contexte ou utilisez lethis
mot-clé si vous voulez simplement une référence à un élément isolé (à condition qu'il y ait un champ de texte dans les descendants / enfants du contexte).la source
.val().length
et que j'utilisais plutôt.length()
l'élément lui-même.Tout le monde a la bonne idée, mais j'aime être un peu plus explicite et couper les valeurs.
si vous n'utilisez pas .length, une entrée de «0» peut être signalée comme mauvaise, et une entrée de 5 espaces pourrait être marquée comme correcte sans $ .trim. Bonne chance.
la source
this.val
seraitundefined
là. Il faudrait que ce soit le cas$(this).val()
- mais il n'y a aucun avantage inter-navigateur à cela, donc je l'ai laissé de côté pour la brièveté / la vitesse.Le faire sur flou est trop limité. Il suppose qu'il y avait un accent sur le champ du formulaire, donc je préfère le faire sur soumettre et mapper via l'entrée. Après des années à gérer des astuces de flou fantaisie, de mise au point, etc., garder les choses plus simples donnera plus de convivialité là où cela compte.
la source
la source
$
if (('input:text').val().length == 0) {
if ($('input:text').val().length == 0) {
vous pouvez également utiliser ..
si vous avez des doutes sur les espaces, essayez ..
la source
pourquoi personne n'a mentionné
me semble plus jquery-like
la source
L'événement keyup détectera si l'utilisateur a également effacé la case (c'est-à-dire que le retour arrière déclenche l'événement mais que le retour arrière ne déclenche pas l'événement de pression de touche dans IE)
la source
Envisagez plutôt d' utiliser le plug-in de validation jQuery . Il est peut-être un peu exagéré pour les champs obligatoires simples, mais il est suffisamment mature pour gérer les cas de bord auxquels vous n'avez même pas encore pensé (et aucun de nous ne le ferait avant de les rencontrer).
Vous pouvez étiqueter les champs obligatoires avec une classe de "requis", exécuter un $ ('formulaire'). Validate () dans $ (document) .ready () et c'est tout ce qu'il faut.
Il est également hébergé sur le CDN de Microsoft, pour une livraison rapide: http://www.asp.net/ajaxlibrary/CDN.ashx
la source
Le
:empty
pseudo-sélecteur est utilisé pour voir si un élément ne contient aucun enfant, vous devez vérifier la valeur:la source
Il y a une autre chose à laquelle vous voudrez peut-être penser, actuellement, il ne peut ajouter la classe d'avertissement que s'il est vide, que diriez-vous de supprimer à nouveau la classe lorsque le formulaire n'est plus vide.
comme ça:
la source
la source
Voici un exemple d'utilisation des touches pour l'entrée sélectionnée. Il utilise également une garniture pour s'assurer qu'une séquence de caractères blancs ne déclenche pas une réponse véridique. Ceci est un exemple qui peut être utilisé pour commencer une zone de recherche ou quelque chose lié à ce type de fonctionnalité.
la source
Vérifiez si tous les champs sont vides et ajoutez ON ou OFF sur Filter_button
la source
Vous pouvez essayer quelque chose comme ceci:
Il appliquera l'
.blur()
événement uniquement aux entrées avec des valeurs vides.la source
la source
Avec HTML 5, nous pouvons utiliser une nouvelle fonctionnalité «requise», il suffit de l'ajouter à la balise que vous souhaitez être requise comme:
<input type='text' required>
la source
Grande collection de réponses, j'aimerais ajouter que vous pouvez également le faire en utilisant le
:placeholder-shown
sélecteur CSS. Un peu plus propre pour utiliser IMO, surtout si vous utilisez déjà jQ et avez des espaces réservés sur vos entrées.Vous pouvez également utiliser les sélecteurs
:valid
et:invalid
si vous avez des entrées requises. Vous pouvez utiliser ces sélecteurs si vous utilisez l'attribut requis sur une entrée.la source
Une solution propre uniquement CSS, ce serait:
la source