如果未禁用,则执行此操作。

6

我正在将输入的数字相加并得到总和。总计脚本可以工作,但现在我想要排除那些已禁用的输入框。我认为我需要使用:not(:disabled),但不确定如何正确地将其放入我的脚本中?

这是计数的脚本:

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

如何表达只有在未禁用的情况下才计算?(错误的编码示例)

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

15

只对未禁用的元素进行迭代:

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

9
您的选择器必须是字符串:
 $(this).is(":not(:disabled)");

这将返回一个布尔值。调用一个没有匹配到任何元素的jQuery选择器的val方法将返回undefined,如果你将undefined和一个数字相加,你会得到NaN

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

在您的特定情况下,Jivings的回答更好。

1
将您的约束条件添加到主选择器中:
$('.observationPositive:not(:disabled)').each(function(){
    countP++;
    sumP += Number($(this).val());
});

0
更加简单的是:
 !$(this).is(":disabled");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接