2009-07-01 87 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; 
}