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追加すると が返されます。undefinedNaN

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 に答える