2012-02-02 12 views
19

Potrzebuję znaleźć typ wejścia dla przycisków radiowych, tekst i wybiera. Łatwo jest znaleźć typ wejścia czegokolwiek z <input type="x"> od $(this).attr("type") wróci xjQuery znaleźć typ wejściowy (ale także dla wybierz)

Mój problem jest, że trzeba wspierać <select> elementy, które nie mają atrybutu type. Ostatecznym celem jest powrót do radia, tekstu lub wybierz.

myślałem zrobić coś takiego, ale byłem ciekaw, czy istnieje lepszy sposób:

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

Dzięki wszystkim!

Odpowiedz

52

Można to (fiddle here) zrobić, zrobić jakiś łatwy w obsłudze plugin:

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

i używać go jak ten

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

Która dostanie rodzaj pierwszego elementu, który jest zaznaczona.

Informacja

Jeśli chcesz po prostu mieć kilka selektorów można użyć tego:

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

lub wybierz wszystkie kontrolki postaci (more info):

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

10 punktów za '$ (": input ")' –

Powiązane problemy