2012-06-26 11 views
8

Tengo un formulario con diferentes campos de entrada HTML ...Comprobar si la entrada es de texto, seleccionar, área de texto o radio

1) <input type="text"> 
2) <textarea></textarea> 
3) <input type="checkbox"> 
4) <input type="radio"> 
5) <select></select> 

¿cómo iba a ser capaz de determinar qué tipo de campo de entrada que está usando jQuery. Por ejemplo: si quería hacer una comprobación para ver si input = "select" y luego hacer cosas.

+1

creo que se puede usar 'cada uno()' a lazo alrededor de su formulario y hacer algunas condiciones en el interior de la misma. –

+0

Ya estoy haciendo eso pero necesito verificar qué tipo de entrada es o si seleccionar o radio o área de texto – Joe

Respuesta

15
$('input') // selects all types of inputs 
$('input:checkbox') // selects checkboxes 
$('select') // selects select element 
$('input:radio') // selects radio inputs 
$('input[type="text"]') // selects text inputs 

puede utilizar event.target.type, esta alerta qué tipo de input, o textreaselect es el objetivo del evento.

$('input, textarea, select').change(function(event){ 
    alert(event.target.type) 
}) 

http://jsfiddle.net/Q4BNH/

+1

Si bien esta es la forma correcta de seleccionar campos de formulario específicos, creo que el OP desea * probar * si un elemento es un campo específico; no para seleccionarlo –

+1

+1 ahora. La mejor respuesta a medida que devuelve el tipo de objeto; sin la comparación requerida por .is(). –

+0

@FergusMorrow gracias. – undefined

1

para 1, 3, 4:

$("input").attr('type'); 
+1

Me da indefinido para seleccionar la opción – Joe

+1

seleccionar y el área de texto no son tipos de entrada, son elementos DOM independientes. –

+0

puede que tenga que usar '.prop ('tipo')' para obtener un valor - parece que jQ está separando el uso de attr() contra prop() – gordon

1
var tipo = $('#elemento14').attr('type'); 
+1

'var tipo = $ ('# elemento14'). Prop (' tipo ');' jQ produce el tipo con prop(), pero "indefinido" con attr(). jQ parece estar abandonando attr(). – gordon

9

Usted puede utilizar .is de jQuery(). Por ejemplo

if ($(this).is("input")) //or 
    if ($(this).is('input:text')) 

Más información here

1

Puede hacer esto escribiendo un selector que se tire a cabo cada uno de estos elementos, y luego se puede iterar a través de ellos y comprobar el tipo. Algo como esto:

$('input, textarea, select').each(function() { 
    var el = $(this); 
    if(el.is('input')) { //we are dealing with an input 
     var type = el.attr('type'); //will either be 'text', 'radio', or 'checkbox 
    } else if(el.is('select')) { //we are dealing with a select 
     //code here 
    } else { //we are dealing with a textarea 
     //code here 
    } 
}); 
0

Puede recorrer todos los elementos de formulario utilizando :input como selector. Desde select y textarea elementos no tienen un atributo type, que desea utilizar .is()

$(':input').each(function(){ 
     if($(this).is('select')){ 
      var inputType = 'select'; 
     }else if($(this).is('input:text')){ 
      var inputType = 'text'; 
     }else if($(this).is('input:checkbox')){ 
      var inputType = 'checkbox'; 
     } 
     console.log('input type = '+inputType+'); 
    }); 
Cuestiones relacionadas