2009-07-01 21 views
5

Tôi có một biểu mẫu có 4 trình đơn thả xuống trên đó. Tùy chọn được chọn mặc định trong tất cả các menu thả xuống là "Vui lòng chọn". Tôi muốn sử dụng Jquery để đảm bảo rằng tất cả các trình đơn thả xuống đều có giá trị trước khi trang được gửi, nhưng mã của tôi chỉ hoạt động trên trang đầu tiên. Có ai có một cách mà tôi có thể kiểm tra tất cả các dropdowns cùng một lúc?Chọn không được chọn

function doconfirm() { 
    if ($('select').val() == '') { 
    alert("Please Select All Fields"); 
    } 
} 

Tôi chắc chắn mình thiếu một số thứ nhưng tôi không thể hiểu được. Cảm ơn

+0

Tôi đoán rằng vì nó không phải là một chức năng mà nó chỉ hoạt động trên lựa chọn đầu tiên trên trang ????? –

+0

Đó là vì lệnh .val() chỉ trả về giá trị của phần tử đầu tiên trong tập hợp gói (đối tượng jQuery). Do đó cần phải kiểm tra giá trị trên mỗi phần tử trong bộ quấn –

Trả lời

8

function doconfirm() { 
    if ($('select').each(function() { 
    if($(this).val() == '') { 
     alert("Please Select All Fields"); 
     return(false); 
    } 
    }); 
} 
+1

từng là chính xác những gì bạn cần. http://docs.jquery.com/Core/each –

+2

Và đảm bảo rằng html của bạn là chính xác - sẽ trả về các thứ khác nhau với val(). Đầu tiên là một chuỗi rỗng, chuỗi thứ hai trả về "Vui lòng chọn" – artlung

+1

Cảm ơn bạn đã làm điều đó. –

0
$('select').each(function(s){if(!this.val())...}); 
4

Một biến thể nhẹ trên cách tiếp cận @mgroves', điều này một cách rõ ràng kiểm tra ít nhất một lựa chọn chọn, và cảnh báo vào ngày đầu tiên chọn mà không có một. Nếu có bất kỳ lợi thế để tiếp cận này, đó là khả năng đọc tốt hơn (đặc biệt là kể từ khi sử dụng .val() được phần nào mơ hồ cho mục đích này):

function doconfirm() { 
    if($('select').each(function() { 
    if(!$(this).find('option:selected').length) { 
     alert("Please Select All Fields"); 
     return(false); 
    } 
    }); 
} 
1

những cảnh quay khác nhau về vấn đề này tại sao không sử dụng

function doConfirm() { 

    var toReturn = true; 

    if ($('select').filter(function(){ 
      return $(this).val() === ''; 
     }).length) { 

     toReturn = false; 
     //notify user 

    } 

    return toReturn; 
} 
Các vấn đề liên quan