0

在这里: http: //jsfiddle.net/justeric/AWC4U/4/选中一个框将对文本字段列中的所有条目求和,并从 100 中减去该总和,然后它将差值放在相应的文本字段中。因此,如果 20 是文本字段列中所有条目的总和,则选中复选框将导致 80 (100-20) 填充到相应的文本字段中。此功能正常工作,但这是我的问题:

如果我取消选中复选框,则相应的文本字段应返回零值而不影响任何其他文本字段。因此,在上面的示例中,80 应该返回 0 而不会更改 20。此外,选中的每个附加复选框都应该返回文本字段的新总和,包括从上次检查中填充的任何内容,现在,第一个计算只是不断重新填充对于选中的每个附加复选框。因此,如果复选框的总和为 20,并且我检查了一个复选框 80 填充在相应的文本字段中,那是正确的,但如果我检查另一个复选框 80 再次填充但这是错误的,现在应该填充 0,因为 100-20-80 = 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 回答