2012-05-14 3 views
4

jQueryを使用してクイックフォームを完成させようとしていますが、小数点が入力に最初に入力された場合は、小数点の前に0を追加する必要があります。入力に10進数を入力する前に0を追加しますか?

たとえば、 .25は、フォームが送信される前に0.25になります。 しかし、2.05は2.05のままで、0は追加されません。

ここに私を助けることができる簡単な機能がありますか?私はむしろ、それが必要でないならば、長いものと詳細なものを書いてはいけません。

はまた、ここでは、浮動小数点数値をフォーマットするparseFloat機能を使用することができます参照

<input type="number" name="dailygain" id="dailygain" /> 

答えて

9

のために、私は助けを求めています入力ボックスです。

var el = document.getElementById("dailygain"); 
el.value = parseFloat(el.value); 
1

数値で表すために1を掛けてください(*1)。

数字を入力すると自動的に入力されます。システムのロケールに基づいた書式設定

例:

var x = '.25'; 
console.log(x*1); // 0.25 

同じことが単項プラス(例えば、console.log(+x);)を用いて達成することができる

+0

私のAndroid携帯電話上でのモバイルブラウザを使用している場合、それは私がオフのままにしておくと先頭の0入力された入力がちょうど消え、通常のWebブラウザ上で先頭の0を追加んが。なぜ私はそれがデフォルトの動作になるのか分かりません。 – xxdrivenxx

+0

非常に興味深い。私はそれを聞いたことがない。文字列から数値への変換がAndroidの電話機に存在しない場合は、さらに大きな問題が発生します。 JavaScriptは文字列と数値の間の移行を最初から容易にするように設定されました。あなたは、数値文字列に数値を掛けて数値を得ることができるはずです。 – vol7ron

0

parseFloatはとにかくおそらくより適していますが、:

$('#dailygain').on('keyup', function() { 
    if (this.value[0] === '.') this.value = '0'+this.value; 
}); 

FIDDLE

0

彼の関数実行でonsubmit

var num=$("#dailygain").val(); //read the number from the textbox 
num=num.toString(); //convert that number to a string 
if (num.charAt(0)==".") //check if the string starts with a period 
    num="0"+num; //if so, add a 0 in front of it 
$("#dailygain").val(num); //write the number back to the tb 
0
$("input[name=dailygain]").keyup(function(){ 
    var val = this.value; 
    if(val.charAt(0) === '.'){ 
    this.value = ('0'+val); 
    } 
}); 

http://jsbin.com/ofivun/2/edit

関連する問題