J'ai une page où le type d'entrée varie toujours et j'ai besoin d'obtenir les valeurs en fonction du type d'entrée. Donc, si le type est une radio, je dois obtenir laquelle est cochée, et si c'est une case à cocher, je dois maintenant qui est cochée, et si c'est une liste déroulante, j'ai besoin de savoir laquelle est sélectionnée, et je si c'est un texte / textarea J'ai besoin de connaître les valeurs.
Une idée sur la façon de faire ça?
Réponses:
EDIT 1 février 2013. En raison de la popularité de cette réponse et des modifications apportées à jQuery dans la version 1.9 (et 2.0) concernant les propriétés et les attributs, j'ai ajouté quelques notes et un violon pour voir comment cela fonctionne lors de l'accès aux propriétés / attributs en entrée, boutons et quelques sélections. Le violon ici: http://jsfiddle.net/pVBU8/1/
obtenir toutes les entrées:
obtenir tous les types d'entrées:
obtenir les valeurs:
REMARQUE: .val () n'est PAS le même que: vérifié pour les types où cela est pertinent. utilisation:
EDIT 1 février 2013 - re: jQuery 1.9 utilisez prop () et non attr () car attr ne retournera pas les valeurs appropriées pour les propriétés qui ont changé.
ou simplement
pour obtenir la valeur du chèque - quelle qu'elle soit actuellement. ou utilisez simplement le ': vérifié' si vous ne voulez que ceux qui SONT vérifiés.
EDIT: Voici une autre façon d'obtenir le type:
EDIT2: Notez que la forme de:
est perfectionné sur
qui correspondent tous deux à:
mais l '"entrée" est souhaitée, elle n'obtient donc que les entrées et n'utilise pas le' * "universel lorsque la forme de
$(':radio')
est utilisée, ce qui équivaut à$('*:radio');
EDIT 19 août 2015: la préférence pour le
$('input[type=radio]');
doit être utilisée car cela permet alors aux navigateurs modernes d'optimiser la recherche d'une entrée radio.EDIT 1 février 2013 par commentaire re: select elements @dariomac
renverra "select-one" ou "select-multiple" selon l'attribut "multiple" et
renvoie la même chose pour la première sélection si elle existe. et
renverra le type s'il existe ou "howdy" si ce n'est pas le cas.
renvoie la propriété du premier dans le DOM s'il existe ou "indéfini" s'il n'en existe pas.
renvoie le type du premier s'il existe ou une erreur s'il n'y en a pas.
la source
allInputs.attr('type');
n'obtiendra que le premier type d'entrée des éléments, à savoir.allInputs[0].attr('type');
s'il y a plus d'un élément dans la collection. Il en va de même pourallInputs.val();
Si vous vouliez faire quelque chose avec le type ou la valeur de chaque élément, vous devriez faire quelque chose commeallInputs.each(function(){ var type = $(this).attr('type'); var val = $(this).val() });
Vous pouvez faire ce qui suit:
la source
Si ce que vous dites est que vous souhaitez obtenir toutes les entrées dans un formulaire qui ont une valeur sans vous soucier du type d'entrée, essayez ceci:
Exemple: http://jsfiddle.net/nfLfa/
Vous devriez maintenant avoir un ensemble d'éléments d'entrée qui ont une certaine valeur.
Vous pouvez mettre les valeurs dans un tableau:
Ou vous pouvez les sérialiser:
la source
la source
la source
Le meilleur endroit pour commencer à chercher est http://api.jquery.com/category/selectors/
Cela vous donnera un bon ensemble d'exemples.
En fin de compte, la sélection des éléments dans le DOM est réalisée à l'aide de sélecteurs CSS, donc si vous pensez obtenir un élément par id, vous voudrez utiliser $ ('# elementId'), si vous voulez que toutes les balises d'entrée utilisent $ ('input') et enfin la partie que je pense que vous voudrez si vous voulez que toutes les balises d'entrée avec un type de case à cocher utilisent $ ('input, [type = checkbox])
Remarque: vous trouverez que la plupart des valeurs souhaitées se trouvent sur des attributs, de sorte que le sélecteur css pour les attributs est: [attributeName = value]
Juste parce que vous avez demandé la liste déroulante comme une zone de liste, essayez ce qui suit:
Le code provenait de la mémoire, veuillez donc signaler les petites erreurs
la source
Commentaires:
Je suppose qu'il y a exactement un élément de formulaire, qui peut être une zone de texte, un champ de saisie, un formulaire de sélection, un ensemble de boutons radio ou une seule case à cocher (vous devrez mettre à jour mon code si vous avez besoin de plus de cases à cocher).
L'élément en question vit à l'intérieur d'un élément avec ID
container
(pour supprimer les ambiguïtés avec d'autres éléments de la page).Le code renverra alors la valeur du premier élément correspondant qu'il trouve. Depuis que j'utilise
:checked
et ainsi de suite, cela devrait toujours être exactement la valeur de ce que vous recherchez.la source
Il semblerait que la fonctionnalité attr soit de plus en plus obsolète
la source
Dans mon application, je me suis retrouvé avec deux éléments différents ayant le même identifiant (mauvais). Un élément était un div et l'autre une entrée. J'essayais de résumer mes entrées et il m'a fallu un certain temps pour réaliser les identifiants en double. En plaçant le type de l'élément que je voulais devant #, j'ai pu saisir la valeur de l'élément d'entrée et supprimer le div:
J'espère que cela aide.
la source
la source
la source