2012-02-02 7 views
19

Devo trovare il tipo di input per i pulsanti di opzione, il testo e seleziona. La sua facile trovare il tipo di ingresso di qualsiasi cosa con <input type="x"> dal $(this).attr("type") sarebbe tornato xjQuery cerca il tipo di input (ma anche per selezionare)

Il mio problema è che ho bisogno di sostenere <select> elementi, che non hanno l'attributo type. L'obiettivo finale è di restituire radio, testo o selezione.

ho pensato di fare qualcosa di simile, ma ero curioso di sapere se c'è un modo migliore:

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) 
} 

Grazie tutti!

risposta

52

Si può fare questo (fiddle here), fare una sorta di facile da usare plugin:

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

e utilizzarlo come questo

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

che otterrà il tipo del primo elemento che è selezionato.

Altre informazioni

Se volete solo avere alcuni selettori è possibile utilizzare questo:

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

o seleziona tutto i controlli dei moduli (more info):

$(":input") // can return all form types 
+7

10 punti per '$ (": ingresso")' –

Problemi correlati