2012-02-02 13 views
19

Necesito encontrar el tipo de entrada para botones de opción, texto y selecciones. Es fácil de encontrar el tipo de entrada de cualquier cosa con <input type="x"> desde $(this).attr("type") volvería xjQuery buscar tipo de entrada (pero también para seleccionar)

Mi problema es que tengo que apoyar <select> elementos, que no tienen el atributo type. El objetivo final es devolver radio, texto o seleccionar.

pensé en hacer algo como esto, pero tenía curiosidad por si hay una mejor manera:

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

Gracias todos!

Respuesta

52

Usted puede hacer esto (fiddle here), hacer algún tipo de fácil de usar plug-in:

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

Y utilizar de esta manera

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

que obtendrá el tipo del primer elemento que está seleccionado.

otra información

Si lo que desea es tener algunos selectores que puede utilizar esto:

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

o seleccione todos los controles de formulario (more info):

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

10 puntos por '$ (": entrada ")' –

Cuestiones relacionadas