2012-02-02 1 views
19

Мне нужно найти тип ввода для переключателей, текст и выбор. Его легко найти тип ввода чего-либо с <input type="x"> после $(this).attr("type") вернется xjQuery найти тип ввода (но также и для выбора)

Моя проблема заключается в том, что мне нужно поддерживать <select> элементы, которые не имеют атрибута типа. Конечной целью является возвращение радио, текста или выбора.

Я думал, что делать что-то подобное, но мне было интересно, если есть лучший способ:

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

Спасибо всем!

ответ

52

Вы можете сделать это (fiddle here), сделать какой-то простой в использовании плагин:

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

И использовать его как этот

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

Что получит тип первого элемента, .

Дополнительная информация

Если вы просто хотите иметь некоторые селекторы, которые можно использовать следующим образом:

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

или выбрать все элементы формы (more info):

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

10 очков для '$ (": вход")' –

Смежные вопросы