2013-02-23 47 views
0

我有我的代码总和,而不是串联

sum=parseFloat($('input[name=fieldname]').val()) * 60 + 
parseFloat($('input[name=fieldname]').val()) + 
(($('input[name=fieldname]').val()) /60).toFixed(2). 

它让我从哪里进入持续felds的值,它应该给我的总和分钟。 问题是,我得到的总和连接了3个字段,而不是返回分钟数。

例如:1小时20分钟,我得到6020代替(60 + 20)80

编辑:上面的代码是通用形式,这里是确切的代码。

var sum = parseFloat($('input[name="<?php esc_attr_e($field->field_id); ?>hrs"]').val())*60 + 
parseFloat(($('input[name="<?php esc_attr_e($field->field_id); ?>mins"]').val()) + 
parseFloat($('input[name="<?php esc_attr_e($field->field_id); ?>secs"]').val())/60).toFixed(2) 
+2

为什么使用'$('input [name = fieldname]').val()'三次? – Bergi 2013-02-23 16:21:19

+0

@Bergi - +1。你知道,我一直很喜欢那个词......“三次”......所以很少有机会在句子中使用它。 – j08691 2013-02-23 16:22:20

+0

这是我的代码的一般形式 – Ioan 2013-02-23 16:23:53

回答

1

它加到因为你仍然在你的语句的字符串。让我们简化数字转换函数,直接使用语法:

var h = $('input[name=hours]').val(), 
    m = $('input[name=minutes]').val(), 
    s = $('input[name=seconds]').val(); 
sum = 3600*(h|0) + 60*(m|0) + (s|0); 
+0

难道你不应该接受花车,至少几秒? – 2013-02-23 16:25:17

+0

只有在页面没有的情况下,在这种情况下,您应该有一个毫秒的字段。 var ms = $(...)。val()然后sum = ... +(ms | 0)/ 1000? – 2013-02-23 16:26:21

+0

不是我的网页;注意乘法已经转换为数字,所以前两个强制转换不是严格必要的。 – 2013-02-23 16:27:19

0

toFixed()返回一个字符串,并将其连接到上一次计算的结果。使用此:

var input = parseFloat($('input[name=fieldname]').val()); 
sum = input * 60 + input + Math.round(input/6000) * 100; 

(相当于工作如果你已经有了独立的输入,我觉得你的想法)

相关问题