0

ここで:http://jsfiddle.net/justeric/AWC4U/4/チェックボックスをオンにすると、テキストフィールド列のすべてのエントリが合計され、その合計が100から差し引かれ、対応するテキストフィールドに差が配置されます。したがって、20がテキストフィールド列のすべてのエントリの合計である場合、チェックボックスをオンにすると、対応するテキストフィールドに80(100-20)が入力されます。この機能は正しく機能しますが、私の問題は次のとおりです。

チェックボックスをオフにすると、対応するテキストフィールドは他のテキストフィールドに影響を与えることなくゼロ値に戻るはずです。したがって、上記の例では、20を変更せずに80を0に戻す必要があります。また、チェックされたすべての追加チェックボックスは、最後のチェックから入力されたものを含む、テキストフィールドの新しい合計を返す必要があります。現在、最初の計算は再入力を続けます。チェックされている追加のチェックボックスごとに。したがって、チェックボックスの合計が20で、チェックボックス80が対応するテキストフィールドに入力されていることを確認すると、それは正しいですが、別のチェックボックス80が再度入力されますが、それが間違っている場合は、100-20-80のために0が入力されます。 =0。

編集:

したがって、他のフィールドに影響を与えずにチェックボックスに対応するテキストフィールドをクリアするには、次のようなものが必要です。

$('.textfield').val(function() {
    if($('#' + this.id.replace(/textfield/,'checkbox')).is(':unchecked')){
return 0;}

これはすべてのチェックされていないチェックボックスに影響しますが、チェックされているチェックボックスがオフに変更された場合にのみ機能するようにします。したがって、チェックされていないチェックボックスに関連付けられている他のテキストフィールドに影響を与えることなく、値は直感的な方法で0に戻ります。

4

1 に答える 1

1

チェックボックスにクラスがあると仮定すると、次のようなことができます。

$('.checkbox').not(':checked');

そのため、変更またはクリック ハンドラーで次のことができます。

$('.checkbox').click(function() {
   if ($(this).not(':checked')) {
     // it is unchecked so do your uncheck function
     doUncheckSumFunction();  // you'd define this do what you need it to do

     } 
});

次のように uncheck 関数を定義することもできます。

$('table').on('unchecked', '.checkboxes', function() {
// do the code you want done
});

次に、最初の例では、代わりに次のdoUnCheckSumFunction()ことができます。

$(this).trigger('unchecked');

アップデート:

一連の要素をループして何かを行うには、次のようにします。

var $textareas = $('.textclass');

var sum = 0;
$('.checkbox').each(function(i) {
   if ($(this).not(':checked')) {
     sum = sum + 1;
     // or
     $textareas[i].val(0); //etc
   }
});

于 2012-06-02T17:19:40.013 に答える