2017-02-17 18 views
2

私は非常にシンプルなJSコードを持っています - コンマを「リアルタイム」のピリオドに置き換えることですすなわち、ユーザが入力しているとき)。たとえば、ユーザーのタイプがでたとき:Javascript - 入力時にカンマをピリオド(入力タイプ= "数字")に自動置換する

<input onkeyup="this.value=this.value.replace(',','.')" type="number">

しかし、それは(少なくともFirefoxで)動作しません - とき:43.65など:43,65は、それがあるべきに自動修正私はいくつかの番号を入力し、カンマを追加すると、番号は完全に消えます。私はピリオドを入力すると削除されます。

答えて

1

それはある...

<input onkeyup="this.value=this.value.replace(/,/g, '.')" type="number">

が、それは動作しないかん:だから、私も試してみました

...全く期待どおりに動作しません。可能ですが、inputタイプtextの場合のみです。 inputタイプnumberでは、数字以外の記号は使用できません。

var input = document.getElementById('input'); 
 
function validate(){ 
 
    input.value = input.value.replace(/,/g, "."); 
 
}
<input onkeyup="validate()" type="text" id='input'>

+0

番号入力が浮動小数点数を許可することができます考えています。それは数字とピリオドを意味するのではなく、コンマではありません。 – evolutionxbox

+0

@evolutionxboxそれを試してみてください。うまくいきませんでした。 –

+0

はい、私はtype = "text"で入力できますが、入力の近くに '矢印'はありません(html5のポイントは人生を楽にすることだったと思います)。なぜかそれがJSとドットにコンマを置き換えることを許可しないと信じている。 – Tom

1

さらにここで何が起こっているかを説明するには、次のコード

function numbersOnly(event) { 
 
    var key = event.keyCode; 
 
    return ((key >= 96 && key <= 105) || (key >= 48 && key <= 57) || key == 188 || key==46 || key==8); 
 
};
<input onkeydown="return numbersOnly(event)" onkeyup="this.value=this.value.replace(',','.')" type="text">

+1

入力タイプ= "数値"は、追加するときに浮動小数点を許可します。 step = "0.01"にします。あなたのコードは素敵ですが、必要に応じてエントリを削除できるようにバックスペースが含まれているはずです。 – Tom

+0

@Tom、バックスペースが追加されました –

+1

多分それは誰かにとって役に立ちます(もしそうならば、期間を受け入れ、去ります - 今のところそれは..のようには見えません)。 – Tom

1

をお試しください。ユーザーがタイプ番号<input type="number">の入力に数字または小数点以外の何かを入力すると、その値は自動的に空になります。このため、入力タイプの数字を自由に操作することはできません。あなたがしたいことを達成したい場合は、入力タイプのテキスト<input type="text">を使用して、いくつかのjavascript関数を記述して目的の効果を作成する必要があります。

function replace(element) { 
 
    // set temp value 
 
    var tmp = element.value; 
 
    // replace everything that's not a number or comma or decimal 
 
    tmp = tmp.replace(/[^0-9,.]/g, ""); 
 
    // replace commas with decimal 
 
    tmp = tmp.replace(/,/, "."); 
 
    // set element value to new value 
 
    element.value = tmp; 
 
}
<input id='numberInput' onkeyup="replace(this)" type="text">

このコードは、あなたが小数にカンマを変換しながら、数字と小数点以外のものを除外しますタイプのテキストの入力ボックスを始める必要があります。

入力ボックスの右側にカウンターを置いておきたい場合は、2つのボタンを追加します。インクリメンタとデクリメンタのほかに、テキスト入力の入力値を、ボタンが押されたかどうかに応じてdoubleをインクリメントまたはデクリメントする倍精度のdouble型に変換する関数もあります。その部分に問題がある場合は、別の質問を投稿することをお勧めします。テキストボックスにカンマを追加する

0

機能:

function Comma1(Num) { 
    Num += ''; 
    Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', ''); 

    x = Num.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{4})/; 
    while (rgx.test(x1)) 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    return x1 + x2; 
} 

私は、これはあなたが

関連する問題