2012-06-26 16 views
8

Mam formularz z różnych pól wejściowych html ...Sprawdź, czy wejście jest pole tekstowe, select, textarea lub radiowy

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

Jak będę w stanie określić, jaki typ pola wprowadzania go za pomocą jQuery. Na przykład: jeśli chcę zrobić, aby sprawdzić, czy input = "select", a następnie wykonaj rzeczy.

+1

myślę, że można użyć 'each()' do pętli wokół postaci i zrobić kilka warunków wewnątrz niego. –

+0

Ja to robię, ale muszę sprawdzić, jaki to jest typ wejścia lub jeśli wybierz lub radio lub textarea – Joe

Odpowiedz

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 

można użyć event.target.type, to alarmy, jaki rodzaj input, textrea lub select jest celem imprezy.

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

http://jsfiddle.net/Q4BNH/

+1

Chociaż jest to poprawny sposób wybierania konkretnych pól formularza, myślę, że OP chce * przetestować * czy element jest określonym polem; nie wybierać. –

+1

+1 teraz. Najlepsza odpowiedź, ponieważ zwraca typ obiektu; bez porównania wymaganego przez .is(). –

+0

@FergusMorrow thanks. – undefined

1

za 1, 3, 4:

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

Daje mi niezdefiniowane dla opcji wyboru – Joe

+1

wybierz i obszar tekstowy nie są typami wejściowymi, są samodzielnymi elementami DOM. –

+0

możesz potrzebować użyć '.prop ('type')', aby uzyskać wartość - wydaje się, że jQ oddziela użycie attr() od prop() – gordon

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

'var tipo = $ ('# elemento14') .project (' type '); 'jQ daje typ z prop(), ale" undefined "z attr(). jQ wydaje się porzucać attr(). – gordon

9

Można użyć .is jQuery(). Na przykład

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

Więcej informacji here

1

Można to zrobić pisząc selektor że wyciągnie każdy z tych elementów, a następnie można iterację nich i sprawdzić typ. Coś takiego:

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

Można pętli wszystkich elementów formularzy wykorzystujących :input jako selektor. Od select i textarea elementy nie mają atrybut type, którego chcesz użyć .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+'); 
    }); 
Powiązane problemy