2013-05-19 9 views
17

数字を入力しようとしています。 、数字の間にスペースを追加しますか?

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 
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プラグインを使用しないでください。ありがとうございました。

+1

警告の単語:これは正しく取得するのは難しいです。入力の途中でマウスをクリックして数字を追加するとどうなりますか?カーソルをどこかに移動して貼り付けをしたらどうですか?元に戻すとやり直しでどれくらいうまく動作しますか?キーボード入力の処理には、正しいタイプの文字列を受け入れるだけではなく、さらに多くの処理があります。 – RichieHindle

答えて

40

整数は浮動小数点数の場合は

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 < < Regexの詳細はこちらをご覧ください。

あなただけの第二1を使用し、数は整数または浮動小数点数であるかどうかがわからない場合は...

18

最も簡単な方法:

var num = 1234567890, 
result = num.toLocaleString() ;// result will equal to "1 234 567 890" 
var num = 1234567.890, 
result = num.toLocaleString() + num.toString().slice(num.toString().indexOf('.')) // will equal to 1 234 567.890 
var num = 1234567.890123, 
result = Number(num.toFixed(0)).toLocaleString() + '.' + Number(num.toString().slice(num.toString().indexOf('.')+1)).toLocaleString() 
//will equal to 1 234 567.890 123 

あなたがしたい場合は '' ではなく「の:

var num = 1234567.890123, 
result = Number(num.toFixed(0)).toLocaleString().split(/\s/).join(',') + '.' + Number(num.toString().slice(num.toString().indexOf('.')+1)).toLocaleString() 
//will equal to 1,234,567.890 123 

動作しない場合は、のようなパラメータを設定します "のtoLocaleString( 'RU-RU')" パラメータ」 「EN-EN」は、「 '」の代わりに'、 'で区切ります

+0

すばらしい解決策! – ChangeTheWay

+0

すっきりした答え!ありがとう! –

関連する問題