0

効果を確認する必要がある前に:

jsフィドル

ご覧のとおり、値をどこにでも置いて他の値に変換できる計算機ですが、問題は、0.3 や 0.999 のような 10 進数の 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. int には小数を含めることができないため、最初にparseFloatを使用する必要があります。2.2番目にonChangeを使用します。 http://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 に答える