显示所选项目文本不是“选择答案”的下拉数

时间:2011-07-19 18:05:31

标签: jquery

请帮我解决这个问题 我想显示所选项目文本不是&#34的下拉列表数量;选择答案"。
以下是我的HTML代码..

<table>
       <tr>
          <td>
          <select id="S1"  class="dropdown">
                  <option value=""  selected="selected">Select answer</option>
                  <option value="1">A</option>
                  <option value="2">B</option>
                  <option value="3">C</option>
         </select>
         </td>
          <td>
          <select id="S1"  class="dropdown">
                  <option value=""  selected="selected">Select answer</option>
                  <option value="1">A</option>
                  <option value="2">B</option>
                  <option value="3">C</option>
         </select>
         </td>
     </tr>
     <table>

下面是我的jQuery代码

  $('select').change(function()
  {
    alert($(this).parents('TR').find('select').filter($(this).find("option:selected").text()!="Select answer").size())
  });

但它不起作用,似乎我的代码存在一些问题。请有人帮助我。

4 个答案:

答案 0 :(得分:0)

试试这个:

var count = $(this).parents('TR').find('select').filter(function() {
    return $(this).find("option:selected").text() == "Select answer";
}).length;

alert(count);

答案 1 :(得分:0)

修复HTML以使Selects具有唯一ID:

<table>
       <tr>
          <td>
          <select id="S1"  class="dropdown">
                  <option value=""  selected="selected">Select answer</option>
                  <option value="1">A</option>
                  <option value="2">B</option>
                  <option value="3">C</option>
         </select>
         </td>
          <td>
          <select id="S2"  class="dropdown">
                  <option value=""  selected="selected">Foobar</option>
                  <option value="1">A</option>
                  <option value="2">B</option>
                  <option value="3">C</option>
         </select>
         </td>
          <td>
          <select id="S3"  class="dropdown">
                  <option value=""  selected="selected">Select answer</option>
                  <option value="1">A</option>
                  <option value="2">B</option>
                  <option value="3">C</option>
         </select>
         </td>
     </tr>
 <table>

使用这个JQuery:

$(function(){
    alert($('select').map(function(){
        if($(this).find(':selected').html() == 'Select answer')
        {
               return $(this).attr('id');
        } 
    }).get().join(','));
});

会提醒S1,S3

答案 2 :(得分:0)

这应该有效:

$('select').change(function()
{
   var count = 0;
   $("select").each(function() {
       if (!$(this).val()){
           count++;
       }
   });

   alert(count);
});

尝试:http://jsfiddle.net/Hn5HC/

此外,您还有两个相同的ID。

答案 3 :(得分:0)

@dogbert的轻微变化:

$('select').change(function(){
    var $selects = $(this).closest('tr').find('select');
    var answered = $selects.find('option:selected').filter(function(i){
        return ($(this).val() != '' ? this : null);
    }).length;
    alert(answered);
});

DEMO

我个人喜欢检查所选选项的缺席值,而不是选项的显示文本 - 但这可能只是我。