2011-04-07 34 views
1

我试图做我的表格上一些现场计算,请看看形式...jQuery的:在模糊事件计算值

<input type="text" value="0" name="product1" class="num"/> 
<input type="text" value="0" name="product2" class="num" /> 
<input type="text" value="0" name="product3" class="num"/> 
<input type="text" value="0" name="cost" class="cost"/> 

和jQuery代码...

$(function() { 
var cost = 0; 
$('.num').blur(function(){ 
cost+= parseFloat($(this).val()); 
}); 
$('.cost').val(cost); 
}); 

但它不工作,请帮助谢谢。

回答

4

您需要将其更新您的模糊事件处理中的成本字段的值行:

UPDATE 还有就是也通过使用该方法,逻辑一个问题,即修改的值会导致总不断被添加到,我已经修改了代码来解决此问题:

$(function() { 
    $('.num').live("blur", function(){ 
     var parentLI = $(this).closest("LI"); 
     var cost = 0; 
     $(".num", parentLI).each(function() { 
      var value = $(this).val(); 
      if (!isNaN(value) && value != "") 
       cost+= parseFloat(value); 
     }) 
     $('.cost').val(cost); 
    }); 
}); 
+0

感谢您的伟大答案,它可以使用jQuery的附加框工作?我认为它不起作用,我应该使用实时功能吗? – seoppc 2011-04-07 10:27:53

+0

或者我应该为此写一个不同的函数。 – seoppc 2011-04-07 10:32:18

+0

如果你通过jQuery附加框,那么就像你说的那样,使用实时函数:$(“。num”)。live(“blur”,function(){...}) – 2011-04-07 10:34:53

0

您也可以使用更改(fn)而不是blur来避免在值未更改时进行不必要的计算。 .keyup(fn)将允许您以用户键入的方式执行此操作。希望有所帮助!

+0

感谢您的建议,但使用键盘功能,它没有给出正确的结果。 – seoppc 2011-04-07 10:22:04

+0

好的,公平的:) – Calum 2011-04-07 11:09:25

0

这是因为你用“VAL”而不是“价值”

+0

这是错字,我已更新问题。 – seoppc 2011-04-07 10:13:12

3

只需推动$('.cost').val(cost);放入模糊功能中,或者只有在页面加载时才会在运行模糊功能时运行。

所以这应该工作:

$(function() { 
    var cost = 0; 
    $('.num').blur(function(){ 
     cost+= parseFloat($(this).val()); 
     $('.cost').val(cost); 
    }); 
}); 
+0

谢谢你的回答,是的,我错过了那部分。 – seoppc 2011-04-07 10:15:16

+0

它可以使用jQuery的附加框工作?我认为它不起作用,我应该使用实时功能吗? – seoppc 2011-04-07 10:19:46

+0

使用委托或活动来追加框并使用相同的功能。 但如下所述。如果您尝试使用上面的代码更新其中一个框,则只需在其上添加值即可。因此,您应该每次将所有这些数据相加,或者将当前值存储在焦点上,并在添加新数字之前将其减去。 – ThoKra 2011-04-07 10:23:20

1

你可能想使用的ID,而不是名称为您的文档元素,使它们独特的。

您的代码应该是这样的:

$(function() { 
    var cost = 0; 
    $('.num').blur(function(){ 
    cost+= parseFloat($(this).value()); 
    $('.cost').value(cost); 
    }); 
}); 

注意它是如何更容易看清问题缩进。成本领域价值的变化并不合适。

+0

感谢您的回答,它可以使用jQuery的附加框工作?我认为它不起作用,我应该使用实时功能吗? – seoppc 2011-04-07 10:20:28

1

变化的jQuery的代码中,$('.cost').val(cost);从来没有所谓的,因为它是写在模糊事件外function..so控制从来没有去过一次它在功能

$(function() { 
var cost = 0; 
$('.num').blur(function(){ 

//EDIT 
$('.cost').val(parseFloat($('.cost').val())+parseFloat($(this).val())); 

}); 
$('.cost').val(cost); 
}); 

而且还使用value属性而不是val在HTML文本框中..

+0

感谢您的回答,它可以使用jQuery的附加框工作?我认为它不起作用,我应该使用实时功能吗? – seoppc 2011-04-07 10:22:46

+0

查看编辑的代码... – 2011-04-07 10:49:49

+0

在HTML文本框中使用'value'属性而不是'val' .. – 2011-04-07 10:52:09