在你需要看到效果之前:
正如您所看到的,它是一个计算器,您可以在任何地方放置一个值并将其转换为其他值,但问题是我无法输入十进制int值,如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>
答案 0 :(得分:3)
parseInt
是“问题”,因为它返回整数 - 十进制值不是整数而是浮点数。如果您愿意,必须将其替换为parseFloat
。
答案 1 :(得分:2)
1.首先你需要使用 parseFloat 因为int cant有小数。 2.其次我会使用 onChange 。 http://jsfiddle.net/Kfkjy/10/
答案 2 :(得分: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('');
}
}
});
答案 3 :(得分:1)
工作小提琴here
你必须使用parseFloat
并且不要尝试设置当前的聚焦元素值,因为你在打字时过度使用它。
答案 4 :(得分: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('');
}
}
});