数字を入力しようとしています。私のテキストボックスは、このコードを介して数字のみを受け入れるようにしました:
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プラグインの使用を控えてください。ありがとうございました。
整数用
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の詳細については、こちらをご覧ください。
数値が整数であるか浮動小数点であるかわからない場合は、2番目のものを使用してください...
最も簡単な方法:
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」は、「」ではなく「、」で番号を分割します