déterminer l'entrée vs textarea dans jQuery
Je souhaite effectuer une itération par le biais d'un formulaire, l'ajout de chaque élément d'une zone. Le problème est que certains de ces éléments sont select, input, et des zones de texte. Je sais que je peux utiliser :input
pour résoudre le problème ici (même si, je n'ai pas vraiment besoin). Le problème, c'est que je vais avoir de la difficulté à déterminer la façon dont je pourrais voir si oui ou non l'élément est un textarea, input, select, etc. J'ai besoin de le faire correctement, car, autant que je sache, jQuery("input#someinput").val()
fonctionne très bien pour les entrées, mais pour un textarea j'ai peut-être besoin jQuery("textarea#sometexarea").text()
. Je ne sais pas si cela existe...
De toute façon, voici ma fonction:
function getAllFormElements(id) {
var elements = new Array();
jQuery(id).children().map(function(){
for (var index = 0; index < children.length; index++) {
elements[i] = jQuery(children[i]).val();
}
})
return elements;
}
source d'informationauteur zeboidlund
Vous devez vous connecter pour publier un commentaire.
val() fonctionne aussi bien avec des
<input>
<select>
et<textarea>
éléments.Si vous voulez toujours de déterminer le type des éléments appariés par le
:input
sélecteur, vous pouvez utiliser est() avec élément de sélecteurs:Vous devriez être en mesure d'utiliser jQuery .est() fonction que de passer un sélecteur .est() et elle retournera true si l'élément ne correspond à la sélection. Alors, pour voir si vous avez eu un textarea, il faudrait vérifier:
http://api.jquery.com/is/
Regarder la
nodeName
propriété.Vous pouvez, mais ne pas avoir à utiliser l'
is
méthode de jQuery (surcharge ici).$.val()
fonctionne pour les deux entrées et les zones de texte. Vous avez seulement besoin$.text()
pour des choses comme les divs qui n'ont pas de "valeur" en soi.Vous êtes peut-être à la recherche pour le
$(children[i]).attr("tagName");
, qui renvoie la balise de l'élément, soit select, input ou textarea?En examinant la documentation de jQuery, vous pouvez facilement obtenir toutes les entrées d'un formulaire à l'aide de
$(:input)
: http://api.jquery.com/input-selector/.val()
travaille également avec des zones de texte, mais il y a une mise en garde ... voir la doc de référence:http://api.jquery.com/val/
Frédéric posté sa réponse que j'ai écrit cela, et sa solution de l'utilisation de
is()
certainement prouve.