2009-07-01 132 views
5

我有一個4下拉的形式。所有下拉菜單中的默認選擇選項均爲「請選擇」。我想使用Jquery確保所有下拉列表在提交頁面之前都有一個值,但是我的代碼只能在第一個下拉列表上運行。有沒有人有辦法讓我可以一次檢查所有的下拉菜單?選擇未選擇

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

我敢肯定我錯過了一些東西,但我無法弄清楚。 感謝

+0

我猜測,因爲它不是一個函數,它只能在頁面上的第一個選擇????? – 2009-07-01 18:31:15

+0

這是因爲.val()命令只返回包裝集(jQuery對象)中第一個元素的值。因此,需要檢查包裝集 – 2009-07-01 18:45:31

回答

8

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

上@mgroves'的方式略有差異,這明確測試至少一個選擇的選項和警報的第一選擇沒有一個。如果有任何的優勢,這種做法,它是更好的可讀性(特別是使用.VAL()是有點含糊爲了這個目的):

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

了不同的看法上這個,爲什麼不使用

function doConfirm() { 

    var toReturn = true; 

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

     toReturn = false; 
     //notify user 

    } 

    return toReturn; 
}