0

在进行任何操作之前,您需要查看效果:

jsFiddle

正如您所看到的,它是一个计算器,您可以将一个值放在任何地方并将其转换为其他值,但问题是我无法输入像 0.3 或 0.999 这样的十进制 int 值。这是什么原因?

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> 
4

5 回答 5

3

parseInt是“问题”,因为它返回整数 - 十进制值不是整数而是浮点数。如果需要,必须将其替换为parseFloat.

于 2012-10-01T11:48:20.327 回答
2

1.首先你需要使用parseFloat因为 int 不能有小数。2.其次我会使用onChangehttp://jsfiddle.net/Kfkjy/10/

于 2012-10-01T11:55:29.337 回答
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('');
    }

}


});
于 2012-10-01T14:09:58.207 回答
1

在这里工作的小提琴

您必须使用parseFloat并且不要尝试设置当前的焦点元素值,因为您在输入时过度使用它。

于 2012-10-04T07:30:45.987 回答
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('');
        }

    }

});
于 2012-10-01T11:48:36.063 回答