5

我正在添加输入到一些输入中的数字并得到一个总数。总计脚本有效,但是现在我不想包括禁用时要计算的输入。我想我需要使用 :not(:disabled) 但不确定如何正确地将其放入我的脚本中?

这是重要的脚本:

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

我怎么说只有在未禁用时才计数?(错误编码示例)

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

4 回答 4

15

仅迭代未禁用的那些:

$('.observationPositive:not(:disabled)').each(function() {
   // increment count
});
于 2013-01-28T18:54:48.683 回答
9

您的选择器需要是一个字符串:

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

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

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

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

于 2013-01-28T18:54:32.153 回答
1

将约束添加到主选择器:

$('.observationPositive:not(:disabled)').each(function(){
    countP++;
    sumP += Number($(this).val());
});
于 2013-01-28T18:55:02.987 回答
0

更简单:

 !$(this).is(":disabled");
于 2019-08-06T11:51:21.547 回答