JQuery / Javascript检查下拉列表

时间:2013-08-30 06:40:16

标签: javascript jquery

我正在开发一个Web应用程序,我在一个页面上有两个下拉列表。

<div id="A">
<select>
    <option value="">please select</option>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
</select>
<select>
    <option value="">please select</option>
    <option>6</option>
    <option>7</option>
    <option>8</option>
    <option>9</option>
    <option>10</option>
</select>
</div>

现在,我想要选择两个下拉列表(除了“请选择”),或者用户不能再进一步了。 这是我的jquery代码。

        var error=0;
        var selected_option = $('#A>select option:selected');
        $('#A').each(function() {
            if(!$('#A select').selected){
                error++;
            }
        });
        if (error>0) {
            alert('Choose the bloody option');
            return false;
        }

到目前为止,实际结果是提醒消息正常,强制选择部分正常工作。然而,即使我从两者中选择,我仍然保持警觉和卡住。想想也许我的if condition设置得不合适。请有人给我一个帮助。非常感谢你。

6 个答案:

答案 0 :(得分:2)

为val()选择更改以获取select的值。

 if(!$('#A select').val()){

答案 1 :(得分:1)

尝试

var valid = $('#A select').filter(function(){
    return $.trim($(this).val()) == ''
}).length == 0

if(!valid){
    alert('not selected')
}

演示:Fiddle

另一个版本

if ($('#A select').has('option:selected[value=""]').length > 0) {
    console.error('not selected')
}else {
    console.log('valid')
}

演示:Fiddle

答案 2 :(得分:1)

你可以试试这个是另一种实现你想要的方式

$('#A select').each(function() {
   if(this.options[this.selectedIndex].value != 'please select'){
       //do here your action
   }
}

答案 3 :(得分:1)

试试这个:

  $('#A select').each(function() {
      if($(this).find('option:selected').text() == 'please select'){
         error++;
      }
  });

答案 4 :(得分:1)

DEMO

 var selected_option = $('#A>select option:selected');
 $('#check').click(function () {
     var error = 0;
     $('#A select').each(function () {
         if ($(this).val() == '') {
             error++;
         }
     });
     if (error > 0) {
         alert('Choose the bloody option');
         return false;
     }
 });

答案 5 :(得分:1)

你可以尝试:

var errors = 0;
$("#A select").each(function(){
if($(this).find("option:selected").is(":eq(0)")){
        errors++;
}
});

if(errors>0){ alert('error!'); }