如何使用JQuery计算具有所选值的选择列表的数量?

时间:2013-12-20 22:44:29

标签: javascript jquery

我正在使用“测验”功能在当前的Rails应用上创建移动版本。目前有一个计数,你已经回答了这个函数生成的问题。

function updateGroupProgressCounter($group){
 var count = $group.find('tr').has('input:checked').length;
 $group.parents('.carousel').find('.checkedCount').text( count);
}

我正在更改单选按钮的输入以选择移动框,并希望保留计数功能,但目前还不能使其正常工作。我试过了

var count = $group.find('tr').has('select option:selected').length;

但是给了我该组中的问题总数。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

我会根据select change事件在行上切换一个类,然后计算这些行。

$('tr select').change(function(){
   $(this).closest('tr').toggleClass('answered', $(this).val()!='' );
});

toggleClass的第二个参数决定是否添加/删除。

然后获得总行数:

$('tr.answered').length

<强> toggleClass() API Docs

另一种使用filter()计算select

的方法
var number_answered=$('tr select').filter(function(){
      return $(this).val !='';
}).length

答案 1 :(得分:0)

可能你正在寻找这样的东西:

$("#boxes").on("change","input", function(){
    $("#total").val($("#boxes input:checked").length);  
});

使用fiddle

答案 2 :(得分:0)

考虑到您的选择列表的第一个元素的值为空(即“”)

所以代码将是

var count = 0;
$group.find('tr select').each(function(){
   if(this.value.length)
     count++;
});

我知道这不是最好的方法。 根据选择添加和删除类,最后找到包含所需类的元素的长度将是@charlietfl建议的更好的方法。