2012-06-26 16 views
8

Ho una forma con diversi campi di input html ...Verificare se l'ingresso è casella di testo, selezionare, textarea o la radio

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

Come potrei essere in grado di determinare quale tipo di campo di input si sta usando jQuery. Ad esempio: se volevo fare un controllo per vedere se input = "select" quindi fare cose.

+1

penso che si può usare 'ciascuna()' per ciclo intorno form e fare alcune condizioni all'interno di esso. –

+0

Ya Sto facendo questo, ma ho bisogno di verificare che tipo di input è o se selezionare o radio o area di testo – Joe

risposta

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 

è possibile utilizzare event.target.type, questa avvisi che tipo di input, textrea o select è l'obiettivo della manifestazione.

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

http://jsfiddle.net/Q4BNH/

+1

Mentre questo è il modo corretto di selezionare specifici campi modulo, penso che l'OP voglia * testare * se un elemento è un campo specifico; non selezionarlo. –

+1

+1 ora. La migliore risposta in quanto restituisce il tipo di oggetto; senza il confronto richiesto da .is(). –

+0

@FergusMorrow grazie. – undefined

1

per 1, 3, 4:

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

Mi dà indefinito per selezionare l'opzione – Joe

+1

selezionare e area di testo non sono tipi di input, sono elementi DOM stand alone. –

+0

potresti dover usare '.prop ('type')' per ottenere un valore - sembra che jQ stia separando l'uso di attr() vs prop() – gordon

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

'var tipo = $ ('# elemento14'). Prop (' digita '); 'jQ restituisce il tipo con prop(), ma" undefined "con attr(). jQ sembra abbandonare attr(). – gordon

9

È possibile utilizzare .is di jQuery(). Per esempio

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

Maggiori informazioni here

1

È possibile farlo scrivendo un selettore che tirerà fuori ciascuno di questi elementi, e quindi si può scorrere attraverso di loro e verificare il tipo. Qualcosa del genere:

$('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

È possibile scorrere tutti gli elementi del modulo utilizzando :input come selettore. Dal momento che select e textarea elementi non hanno un attributo type, si consiglia di utilizzare .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+'); 
    }); 
Problemi correlati