2012-06-26 30 views
8

Tôi có một hình thức với các lĩnh vực khác nhau html đầu vào ...Kiểm tra nếu đầu vào là textbox, chọn, textarea hoặc radio

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

Làm thế nào tôi sẽ có thể xác định loại trường nhập nó được sử dụng jQuery. Ví dụ: Nếu tôi muốn kiểm tra xem liệu đầu vào = "chọn" có thực hiện được không.

+1

tôi nghĩ rằng bạn có thể sử dụng 'mỗi()' để lặp xung quanh hình thức của bạn và làm một số điều kiện bên trong của nó. –

+0

Ya Im làm điều đó nhưng tôi cần phải kiểm tra kiểu đầu vào đó là gì hoặc nếu chọn hoặc radio hoặc textarea – Joe

Trả lời

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 

bạn có thể sử dụng event.target.type, cảnh báo này loại input, textrea hoặc select là mục tiêu của sự kiện này.

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

http://jsfiddle.net/Q4BNH/

+1

Trong khi đây là cách chính xác để chọn các trường biểu mẫu cụ thể, tôi nghĩ rằng OP muốn * kiểm tra * liệu một phần tử là một trường cụ thể hay không; không chọn nó. –

+1

+1 ngay bây giờ. Câu trả lời tốt nhất khi nó trả về kiểu đối tượng; mà không cần so sánh bởi .is(). –

+0

@FergusHãy cảm ơn ngày mai. – undefined

1

Đối với 1, 3, 4:

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

Nó mang lại cho tôi không xác định cho lựa chọn lựa chọn – Joe

+1

vùng chọn và văn bản không phải là kiểu đầu vào. –

+0

bạn có thể phải sử dụng '.prop ('type')' để lấy giá trị - dường như jQ đang tách biệt việc sử dụng attr() vs prop() – gordon

1

tôi đề nghị bạn sử dụng JQuery là cú pháp

http://api.jquery.com/is/

cái gì đó dọc theo dòng của

$(document).ready(function() { 
    var items = $("input"); 
    if(items.first().is("input[type=text]")) { 
    alert("Text type");    
    } 
}); 

Bạn có thể kiểm tra nó ra ở đây http://jsfiddle.net/JRLn9/2/

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

'var tipo = $ ('# elemento14'). Prop (' type '); 'jQ sinh ra kiểu có prop(), nhưng" undefined "với attr(). jQ dường như đang từ bỏ attr(). – gordon

9

Bạn có thể sử dụng .là jquery của(). Ví dụ

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

Thông tin thêm here

1

Bạn có thể làm điều này bằng cách viết một selector sẽ kéo ra mỗi người trong số những yếu tố này, và sau đó bạn có thể lặp qua chúng và kiểm tra các loại. Một cái gì đó như thế này:

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

Bạn có thể lặp qua tất cả các yếu tố hình thức sử dụng :input như selector. Kể từ selecttextarea yếu tố không có một thuộc tính type, bạn muốn sử dụng .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+'); 
    }); 
Các vấn đề liên quan