2012-02-29 13 views
10

Tengo un formulario con algunas entradas y selecciones. Quiero obtener el tipo de elemento en su clic con jQuery. Sé que puedo usar attr("input") para ver si el elemento es radio, casilla de verificación o texto, pero ¿qué pasa con selects y textarea?Obtiene el tipo de elemento de formulario con jQuery

¿Existe una función general como .type() para obtenerlo?

Respuesta

16

Puede usar :input para seleccionar todos los elementos de entrada.

Usted podría intentar algo como ...

$('#your-form').find(':input').click(function() { 
    var type = this.type || this.tagName.toLowerCase(); 
    alert(type); 
}); 

Para input elementos, esto debería darle su atributo type, como text, radio, checkbox, etc.

Para select y textarea elementos, debe darle el nombre de la etiqueta como select o textarea.

+0

Bueno, esto es definitivamente mucho mejor que mi solución .. + 1 – Rasmus

+0

funcionará, excepto con los selecciona, su tipo es 'select-one' ! ver [esto] (http://jsfiddle.net/yqrKV/3/) JSFiddle – gdoron

+0

Hola Alex, siento molestarte, pero puedes escribir 'var type = this.type;' si no te importa si selecciona tipo será 'select-one' – gdoron

6

Primera .attr('input') no le dará el tipo, utilizar esto para las entradas:

var type = $('input').attr('type') 

Para las entradas, seleccionar y área de texto:

$('#formId :input').click(function() { 
    alert(this.tagName != 'INPUT' ? this.tagName : this.type); 
});​ 

:input selector de docs:

Descripción: selecciona todos los elementos de entrada, área de texto, selección y botón.

JSFiddle DEMO

+0

También la propiedad javascript .type proporciona el tipo global de elemento. '$ (" # elm ") [0] .type' – arunes

+0

@arunes.¡excepto de select, su tipo es 'select-one'! – gdoron

+0

¿Cómo es esta respuesta mejor de lo que Alex ha respondido – Rasmus

0

Selecciona y áreas de texto son diferentes etiquetas. Use tagName.

element.tagName 
1

Conseguir el tipo de elemento (entrada, seleccionar, div, extenderse etc):

var elementType = $(this).prop('tagName'); 

Comprobación de concreto tipo de elemento:

var is_element_input = $(this).is("input"); //true or false 

Conseguir el tipo de entrada (input type="button" etc)

var inputType = $(this).attr('type'); 
0

Dar a todos los elementos de un nombre de clase decir "CheckType" y luego utilizar: -

$(".checktype").click(function(){ 
    alert(this.tagName); 
}) 
+0

Won'y trabajo para las entradas ... Lea mi respuesta. – gdoron

Cuestiones relacionadas