2012-02-02 2 views
19

Tôi cần phải tìm loại đầu vào cho các nút radio, văn bản và các lựa chọn. Thật dễ dàng để tìm loại đầu vào của bất kỳ thứ gì với <input type="x"> kể từ $(this).attr("type") sẽ trả về xjQuery tìm loại đầu vào (nhưng cũng để chọn)

Vấn đề của tôi là tôi cần hỗ trợ các thành phần loại <select>. Mục tiêu cuối cùng là trả lại radio, văn bản hoặc chọn.

tôi nghĩ làm một cái gì đó như thế này, nhưng tôi đã tò mò nếu có một cách tốt hơn:

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

Cảm ơn tất cả!

Trả lời

52

Bạn có thể làm điều này (fiddle here), làm cho một số loại dễ sử dụng plugin:

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

Và sử dụng nó như thế này

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

Mà sẽ nhận được các loại của các yếu tố đầu tiên mà đã được chọn.

Thông tin khác

Nếu bạn chỉ muốn có một số selectors bạn có thể sử dụng này:

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

Hoặc chọn tất cả các hình thức kiểm soát (more info):

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

10 điểm cho '$ (": input ")' –