web-dev-qa-db-fra.com

jQuery find type d'entrée (mais aussi pour select)

J'ai besoin de trouver le type d'entrée pour les boutons radio, le texte et les sélections. Il est facile de trouver le type d'entrée de n'importe quoi avec <input type="x"> Puisque $(this).attr("type") retournerait x

Mon problème est que je dois prendre en charge les éléments <select>, Qui n'ont pas l'attribut type. L'objectif final est de renvoyer la radio, le texte ou la sélection.

J'ai pensé à faire quelque chose comme ça, mais j'étais curieux de savoir s'il y avait une meilleure façon:

if ($(this).tagName == "input") {
    var result = $(this).attr("type");   //returns radio or text (the attr type)
} else {
    var result = $(this).tagName;        //returns select (the element type)
}

Merci a tous!

26
jaredrada

Vous pouvez le faire ( violon ici ), faire une sorte de plugin facile à utiliser:

$.fn.getType = function(){ return this[0].tagName == "INPUT" ? this[0].type.toLowerCase() : this[0].tagName.toLowerCase(); }

Et utilisez-le comme ça

$(".element").getType(); // Will return radio, text, checkbox, select, textarea, etc (also DIV, SPAN, all element types)
$(".elList").getType(); // Gets the first element's type

Qui obtiendra le type du premier élément sélectionné.

Autres informations

Si vous voulez juste avoir des sélecteurs, vous pouvez utiliser ceci:

$("input:text, input:radio, select");

Ou sélectionnez tous les contrôles de formulaire ( plus d'informations ):

$(":input") // can return all form types
65
Niels

Tous les types de boîtes de saisie et de sélection de boîtes se réunissent par jQuery find:

$('#myForm').find('select,input').each(function(i,box){
     alert($(box).attr('name'));
}
2
Hasib Kamal