2012-01-18 29 views
23

Tôi có 3 div, mỗi trường có một trường nhập dfew và nút tiếp theo. Tôi muốn viết một đoạn mã jQuery khi nút tiếp theo được nhấp vào, nó sẽ kiểm tra để đảm bảo tất cả các trường nhập CÓ cùng số div với nút, không phải là rỗng.Kiểm tra tất cả các trường nhập đã được điền bằng jQuery

Tôi đã thử những điều sau đây không có may mắn nhưng nhất định nó sai, duy nhất tôi không thể tìm thấy những thông tin liên quan trực tuyến Im 100% ...

http://jsfiddle.net/xG2KS/1/

Trả lời

52

Bạn có thể sử dụng để giảm filter tập hợp tất cả các phần tử input chỉ dành cho những phần tử trống và kiểm tra thuộc tính length của những gì còn lại:

$(".next").click(function() { 
    var empty = $(this).parent().find("input").filter(function() { 
     return this.value === ""; 
    }); 
    if(empty.length) { 
     //At least one input is empty 
    } 
}); 

Lưu ý rằng định nghĩa của trống trong mã trên là một chuỗi rỗng. Nếu bạn muốn xử lý các khoảng trắng trống, bạn có thể muốn cắt giảm giá trị trước khi so sánh.

Cũng lưu ý rằng không cần phải vượt qua this vào jQuery bên trong hàm filter. Bản thân phần tử DOM sẽ có thuộc tính value và việc truy cập vào đó nhanh hơn rất nhiều thay vì sử dụng val.

Đây là số updated fiddle.

+1

Ahh rực rỡ, cảm ơn! – Liam

+0

Không có vấn đề, vui mừng tôi có thể giúp :) –

+0

Làm thế nào có thể sử dụng điều này với một hình thức với văn bản đầu vào và chọn? –

6
$('.next').click(function() { 
    var emptyInputs = $(this).parent().find('input[type="text"]').filter(function() { return $(this).val() == ""; }); 
    if (emptyInputs.length) { 
     alert('Fail!'); 
    } 
}); 
+0

Cảm ơn @garvey !, có cách nào để nói, nếu BẤT K input đầu vào nào trống rỗng ném một cảnh báo như trái ngược với vòng lặp? – Liam

+0

Có, xem các chỉnh sửa của tôi. Không có vòng lặp. – pltvs

+0

Tôi có thể bao gồm các lựa chọn như thế nào ?? –

0
$('.next').click(function() { 
    var inputs = $(this).parent().find('input[value=""]'); 
    if (!inputs.length) { 
     // you have empty fields if this section is reached 
    } 
}); 
+0

Điều này sẽ cho biết có đầu vào trống ngay cả khi không có, bởi vì nó nhìn vào thuộc tính 'value' * * chứ không phải thuộc tính. –

+0

Tôi không theo dõi? Vì tôi không thông thạo thạo jQuery như tôi nên, bạn có thể giải thích được không? –

+3

Bạn đã sử dụng bộ chọn thuộc tính để tìm các phần tử có thuộc tính 'value' bằng chuỗi rỗng. Thuộc tính 'value' * * là những gì được định nghĩa trên chính phần tử đó:' '. Vì không có phần tử 'input' nào được đề cập có thuộc tính' value', mã của bạn sẽ luôn nói rằng tất cả chúng đều trống. –

Các vấn đề liên quan