La sélection de vide de saisie de texte à l'aide de jQuery
Comment puis-je identifier les zones de texte vides à l'aide de jQuery? Je voudrais le faire en utilisant les sélecteurs si il est possible de tout. Aussi, je dois sélectionner l'id depuis dans le code réel où je veux l'utiliser je ne veux pas sélectionner tout le texte d'entrées.
Dans mes deux exemples de code suivants la première affiche avec précision la valeur saisie dans la zone de texte "txt2" par l'utilisateur. Le deuxième exemple indique qu'il existe une zone de texte vide, mais si vous le remplissez en elle la considère encore comme vide. Pourquoi est-ce?
Cela peut-il être réalisés en utilisant les sélecteurs?
Ce code les rapports de la valeur dans la zone de texte "txt2":
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('#cmdSubmit').click(function() {
alert($('[id=txt2]').val());
});
});
</script>
</head>
<body>
<form>
<input type="text" name="txt1" id="txt1" value="123" /><br />
<input type="text" name="txt2" id="txt2" value="" /><br />
<input type="text" name="txt3" id="txt3" value="abc" /><br />
<input type="submit" name="cmdSubmit" id='cmdSubmit' value="Send" /><br />
</form>
</body>
</html>
Ce code signale toujours textbox "txt2" vides:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('#cmdSubmit').click(function() {
if($('[id^=txt][value=""]').length > 0) {
if (!confirm("Are you sure you want to submit empty fields?")) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
}
});
});
</script>
</head>
<body>
<form>
<input type="text" name="txt1" id="txt1" value="123" /><br />
<input type="text" name="txt2" id="txt2" value="" /><br />
<input type="text" name="txt3" id="txt3" value="abc" /><br />
<input type="submit" name="cmdSubmit" id='cmdSubmit' value="Send" /><br />
</form>
</body>
</html>
- Personne ne sait si " [value=]' ignore la saisie de l'utilisateur et vérifie seulement ce qui est dans la source?
- Suis-je en droit que l' :filtre vide est fait pour ce travail? $('input[type=text]:vide').doStuff();
- lire les docs - docs.jquery.com/Selectors/empty. Vide est pour les éléments qui n'ont pas d'enfants, PAS de valeur
- ce serait formidable si
Vous devez vous connecter pour publier un commentaire.
Une autre façon
ou
ou
Travail Démo
code de la démo
jQuery
$('input:text').filter(function() { return $(this).val().trim() == ""; });
[value=""]
sélecteur ne fonctionne pas car il ne trouve pas la valeur de l'attribut. Cependant, l' .filtre de la technique de travail dans ce scénario.Vous pouvez aussi le faire en définissant votre propre sélecteur:
Puis d'y accéder comme ceci:
?
Par ailleurs, votre appel de:
peut être grandement simplifié et accéléré avec:
Comme mentionné dans le haut du classement de poste, les ouvrages suivants, avec le Grésillement du moteur.
Dans les commentaires, il a été noté que la suppression de la
:text
partie de la sélection provoque le sélecteur à l'échec. Je crois que ce qui se passe est que le Grésillement réellement s'appuie sur le navigateur intégré dans le sélecteur moteur lorsque cela est possible. Lorsque:text
est ajouté pour le sélecteur, il devient un non-standard sélecteur CSS et ce qui doit être traitée par le Grésillement lui-même. Cela signifie que le Grésillement vérifie la valeur actuelle de l'ENTRÉE, à la place de la "valeur" de l'attribut spécifié dans la source HTML.Donc, c'est une manière intelligente de vérifier pour vider les champs de texte, mais je pense qu'il s'appuie sur un comportement spécifique pour le Grésillement du moteur (en utilisant la valeur actuelle de l'ENTRÉE à la place de l'attribut défini dans le code source). Alors que le Grésillement peut retourner les éléments qui correspondent à ce sélecteur,
document.querySelectorAll
, vous obtiendrez uniquement les éléments qui ontvalue=""
dans le code HTML. Caveat emptor.$("input[type=text][value=]")
Après essayer un tas de version j'ai trouvé, c'est la plus logique.
Noter que
text
est sensible à la casse.Bâtiment sur @James Wiseman réponse, je suis en utilisant ceci:
Cela va attraper les entrées qui contiennent uniquement des espaces en plus de ceux qui sont "vraiment" vide.
Exemple: http://jsfiddle.net/e9btdbyn/
Je le recommande:
<input value="">
sera toujours correspondre.{{Form::text('first_name', Input::old('first_name'), array('class' => 'form-control', 'required'))}}
) parce que Laravel ne pas ajouter une 'valeur' de l'attribut s'il est vide. J'ai donc utilisé:$('input:text:not([value]):visible:enabled:first');
pour trouver le premier visible vide activé champ de saisie de texte.Il y a beaucoup de réponses ici, ce qui suggère quelque chose comme
[value=""]
mais je ne pense pas que qui fonctionne réellement . . . ou au moins, l'utilisation n'est pas conforme. Je suis en train de faire quelque chose de similaire, sélectionner toutes les entrées avec des id à partir d'une certaine chaîne de caractères qui aussi n'ont pas de valeur entrée. J'ai essayé ceci:mais ça ne fonctionne pas. Ni l'inversion entre eux. Voir ce violon. Les seuls moyens que j'ai trouvé correctement, sélectionnez toutes les entrées avec les identifiants commençant par une chaîne de caractères et sans valeur saisie ont été
et
mais de toute évidence, la double négation faire que vraiment déroutant. Probablement, Russ Cam première réponse (avec une fonction de filtrage) est le plus clair de méthode.
Cela va sélectionner de texte vide entrées avec un id qui commence par "txt":