2012-05-30 103 views
2

我不知道是否有計數的用戶的選擇更有效的方式選擇盒:jQuery的計算已在項目選擇

這是選擇下拉式選單,在頁面上多次:

<select class="span2 jquery-countable" name="category[7]"> 
    <option></option> 
    <option value="1">1. vote</option> 
    <option value="2">2. vote</option> 
    <option value="3">3. vote</option> 
    <option value="4">4. vote</option> 
</select> 

這是唯一考慮的選擇我的JS:

$(document).ready(function() { 

    $('#selected-count').html('You choose ' + getCount() + ' entries'); 

    function getCount() { 
     prio1 = $('.jquery-countable option:selected[value="1"]').length; 
     prio2 = $('.jquery-countable option:selected[value="2"]').length; 
     prio3 = $('.jquery-countable option:selected[value="3"]').length; 
     prio4 = $('.jquery-countable option:selected[value="4"]').length; 

     return prio1 + prio2 + prio3 + prio4; 
    } 

    $('.jquery-countable').change(function() { 
     $('.jquery-countable option:selected').each(function() { 
      $('#selected-count').html('You choose ' + getCount() + ' entries'); 
     }) 
    }) 
}); 

我的目標是要算的是凡不爲空的用戶所做的所有選擇?

有沒有更高效的方法?

謝謝!

回答

5

這將返回選中項目的數量,是不是空的,因爲你希望:

function getCount(){ 
    return $("select.jquery-countable option:selected[value!='']").length; 
} 
0

是的,只需將[value =#]關閉。更通用的選擇器將返回一個選定值的數組,在選擇的情況下,它應該只包含1。

function getCount() { 
    return $('.jquery-countable option:selected').length; 
} 

這將計算頁面上選中的「已選」選項的總數,其中包含jquery-countable類。

+0

'console.log($('。jquery-countable option:selected'));'我已經試過了,但是它也返回空的'選擇''在我的測試用例中,有22個選擇,如果我只選擇其中的10個,它仍然返回22「選定」 – FMK

+1

您需要最後一點以及console.log($(「select.jquery-countable option:selected [value!=' ']「)。length) –

+0

是的,他是對的..你確實需要這個值!='' – whiteatom

1

這裏是一個辦法做到這一點

$(document).ready(function() { 

    $('#selected-count').html('You choose ' +0 + ' entries'); 



    $('.jquery-countable').change(function() { 
     var count = 0; 
     $('.jquery-countable').each(function() { 
      if($.trim($(this).val()).length > 0) 
       count++; 
     }); 
     $('#selected-count').html('You choose ' +count + ' entries'); 
    }) 
});​ 

Working Fiddle

0

嘗試是這樣的

$("select").change(function(){   
    var count = $("select.jquery-countable option:selected[value!='']").length; 
    console.log(count); 
});