2012-10-01 55 views
0

任何东西之前,你需要看到效果:为什么不能我输入下面的情况下,输入十进制值

jsFiddle

正如你可以看到它是一个计算器,你可以把一个价值在任何地方和隐蔽它到其他值,但问题是,我不能输入像0.3或0.999十进制整数值。这是什么原因?

var id = { 
    mm: 1, 
    cm: 10, 
    m: 1000, 
    km: 1000000 
}; 

$('input.bx').on('keyup', function() { 

    var t = $(this).val(); 
    var i = id[$(this).attr("id")]; 
    var v = parseInt(t, 10); 

    for (pp in id) { 

     if (t !== '') { 
      $("#" + pp).val(v/id[pp] * i); 
     } else { 
      $(".bx").val(''); 
     } 

    } 

}); 

<input type='text' class='bx' id='mm'> Milimeter<br> 
<input type='text' class='bx' id='cm'> Centimeter<br> 
<input type='text' class='bx' id='m'> Meter<br> 
<input type='text' class='bx' id='km'> Kilometer<br> 
+2

为U A工作小提琴[链接](http://jsfiddle.net/cQCmR/) –

+0

@Anil库马尔请回答这个问题,所以我可以接受它!谢谢! – faq

+0

回答。完成。 @faq –

回答

1

工作小提琴here

你必须使用parseFloat和不尝试设置当前聚焦元素的值,因为你已经结束在打字时骑它。

3

parseInt是“问题”,因为它返回整数 - 十进制值不是整数,而是漂浮。如果你想要的话,你必须用parseFloat替换它。

+1

准确地说,“小数整数值如0.3或0.999”本身就是一个矛盾。 – dokaspar

0
$('input.bx').on('blur', function() { 

    var t = $(this).val(); 
    var i = id[$(this).attr("id")]; 
    var v = Number(t, 10); 

    for (pp in id) { 

     if (t !== '') { 
      $("#" + pp).val(parseFloat(v/id[pp] * i)); 
     } else { 
      $(".bx").val(''); 
     } 

    } 

}); 
1

这个例子是工作的罚款

http://jsfiddle.net/Mohamed_aboelenen/D6T7j/1/

$('input.bx').on('keyup', function() { 

var t = $(this).val(); 
var i = id[$(this).attr("id")]; 
var v = parseFloat(t, 10); 
var a = $(this).attr("id"); // the textbox you write in 
for (pp in id) { 
    if (t !== '') { 
     if(a != pp){ // make changes to any textbox except the one you write in 
     $("#" + pp).val(v/id[pp] * i); 
     } 
    } else { 
     $(".bx").val(''); 
    } 

} 


}); 
相关问题