160 votes

Comment obtenir le type d'entrée à l'aide de jquery?

J'ai une page où le type d'entrée varie toujours en fonction, et j'ai besoin d'obtenir les valeurs en fonction du type d'entrée. Donc, si le type est une radio, j'ai besoin d'obtenir ce qui est vérifié, et si c'est une case à cocher j'ai besoin de maintenant qui sont vérifiés, et si c'est une liste déroulante j'ai besoin de savoir qui est sélectionné, et j'ai si c'est un texte/textarea j'ai besoin de connaître les valeurs.

Aucune idée sur comment faire?

292voto

Mark Schultheiss Points 13110

EDIT Feb 1, 2013. En raison de la popularité de cette réponse et les changements de jQuery en 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 il fonctionne lors de l'accès à des propriétés ou attributs en entrée, boutons et quelques sélectionne. Le violon ici: http://jsfiddle.net/pVBU8/1/


obtenir toutes les entrées:

var allInputs = $(":input");

obtenir toutes les entrées de type:

allInputs.attr('type');

obtenir les valeurs:

allInputs.val();

REMARQUE: .val() n'est PAS la même chose que :vérifié pour ces types de qui est pertinente. utilisation:

.attr("checked");

EDIT Feb 1, 2013 - re: jQuery 1.9 utilisation prop() pas attr() attr ne reviendra pas bonnes valeurs pour les propriétés qui ont changé.

.prop('checked');

ou tout simplement

$(this).checked;

pour obtenir la valeur du chèque - ce qu'il est actuellement. ou tout simplement utiliser les ':checked' si vous voulez seulement de celles qui SONT cochées.

EDIT: Voici une autre façon d'obtenir le type:

var allCheckboxes=$('[type=checkbox]');

EDIT2: Notez que la forme de:

$('input:radio');

est préféraient plus

$(':radio');

dont deux correspondent à:

$('input[type=radio]');

mais le "input" est souhaité de sorte qu'il ne reçoit que les entrées et ne pas utiliser de l'universel " * " quand la forme de $(':radio') est utilisé, ce qui équivaut $('*:radio');


EDIT Feb 1, 2013 par commentaire re: sélectionnez les éléments @dariomac

$('select').prop("type");

sera de retour soit "sélectionner un" ou "sélectionnez-les multiples" selon les "multiples" attribut et

$('select')[0].type 

renvoie le même pour la première sélectionnez s'il existe. et

($('select')[0]?$('select')[0].type:"howdy") 

sera de retour le type, s'il existe, ou "howdy" si il ne le fait pas.

 $('select').prop('type');

retourne le bien de la première dans les DOM, s'il existe, ou "undefined" si elles n'existent pas.

$('select').type

retourne le type de la première, si elle existe, ou une erreur si il n'en existe aucun.

19voto

xil3 Points 7220

Vous pouvez effectuer les opérations suivantes:

var inputType = $('#inputid').attr('type');

9voto

user113716 Points 143363

Si ce que vous dites, c'est que vous souhaitez obtenir toutes les entrées à l'intérieur d'une forme qui ont une valeur, sans vous soucier du type d'entrée, essayez ceci:

Exemple: http://jsfiddle.net/nfLfa/

var $inputs = $('form').find(':checked,:selected,:text,textarea').filter(function() {
    return $.trim( this.value ) != '';
});

Maintenant, vous devriez avoir un ensemble d'éléments d'entrée qui ont une certaine valeur.

Vous pouvez mettre les valeurs dans un tableau:

var array = $inputs.map(function(){
    return this.value;
}).get();

Ou vous pouvez sérialiser:

var serialized = $inputs.serialize();

7voto

Matthew Abbott Points 32861
GetValue = function(id) {
  var tag = this.tagName;
  var type = this.attr("type");

  if (tag == "input" && (type == "checkbox" || type == "radio"))
    return this.is(":checked");

  return this.val();
};

4voto

Ergec Points 3199
$("#yourobj").attr('type');

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