61

数値入力をしようとしています。テキストボックスがこのコードを介して数字のみを受け入れるようにしました:

function isNumber(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}

しかし、ここで問題になるのは、ユーザーが番号を入力するときにどのようにスペースを作成するかということです。これは、iPhone の電話のスペーシングによく似ていますが、数字を使用すると、たとえば、1000 と入力すると 1 000 になります。

1
10
100
1 000
10 000
100 000
1 000 000
10 000 000
100 000 000
1 000 000 000

等...

3文字ごとに右から入力を読み取ってスペースを追加しようとしました。しかし、私の方法は非効率的で、テキストボックスで値を 1000 から 1000 に変更すると、何らかの理由でそれが選択され、その後キーを押すとすべてが消去されます。

これを行う方法を知っている場合は、jQuery などの JavaScript プラグインの使用を控えてください。ありがとうございました。

4

3 に答える 3

130

整数の使用

function numberWithSpaces(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
}

浮動小数点数の場合、使用できます

function numberWithSpaces(x) {
    var parts = x.toString().split(".");
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, " ");
    return parts.join(".");
}

これは単純な正規表現作業です。https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions << 正規表現の詳細については、こちらをご覧ください。

数値が整数か浮動小数かがわからない場合は、2 番目の数値を使用してください...

于 2013-05-19T17:03:07.153 に答える