如果未禁用,请执行此操作

时间:2013-01-28 18:52:46

标签: jquery math

我正在添加输入到某些输入中的数字并获得总数。总计脚本现在可以正常工作,但是如果它们被禁用,我希望不包括要计数的输入。我想我需要使用:not(:disabled)但不确定如何正确地将它放入我的脚本中?

这是一个重要的脚本:

$('.observationPositive').each(function(){
    countP++;
    sumP += Number($(this).val());
});

如果没有禁用,我该怎么说才算? (错误编码的例子)

$('.observationPositive').each(function(){
    countP++;
    sumP += Number($(this:not(:disabled)).val());
});

4 个答案:

答案 0 :(得分:14)

仅迭代未禁用的那些:

$('.observationPositive:not(:disabled)').each(function() {
   // increment count
});

答案 1 :(得分:9)

你的选择器必须是一个字符串:

 $(this).is(":not(:disabled)");

这将返回一个布尔值。在不匹配任何元素的jQuery选择器上调用val将返回undefined,如果您将undefined添加到数字,则会获得NaN

sumP += $(this).is(":disabled") ? 0 : Number($(this).val());    

在您的特定情况下,Jivings' answer会更好。

答案 2 :(得分:1)

将约束添加到主选择器:

$('.observationPositive:not(:disabled)').each(function(){
    countP++;
    sumP += Number($(this).val());
});

答案 3 :(得分:0)

更简单:

 !$(this).is(":disabled");