2017-02-17 70 views
2

我有一個非常簡單的JS代碼 - 目標是用'實時'代替逗號即按照用戶的輸入)。例如,當用戶鍵入:43,65那麼它應該是自動更正爲:43.65等:Javascript - 在輸入時自動替換一段逗號(輸入類型=「數字」)

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

不過,這並不(至少在Firefox)的工作 - 當我輸入一些數字並添加一個逗號,數字完全消失。當我輸入一段時間時,它會被刪除。所以它不會按預期在所有...

我也試過:

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

,但它不工作,要麼...

回答

1

這是可能的,但僅在input型號textinput類型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的重點是讓生活更輕鬆)。哈特相信爲什麼它不會允許用逗號代替一個逗號點.. – 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

input type =「number」允許在添加時浮動,例如。 step =「0.01」。你的代碼很好 - 但它也應該包括退格,以便能夠在需要時刪除一個條目: – Tom

+0

@Tom,backspace added –

+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">

此代碼應幫助您開始使用類型的文本,這將排除號碼和小數的任何其他的輸入框,而將任何逗號進入小數。

如果您想在輸入框的右側保留一個計數器,您需要添加兩個按鈕;增量和減量,以及將文本輸入的輸入值轉換爲雙倍的函數,或者根據按下哪個按鈕來遞增或遞減雙精度。如果你在那部分有問題,我會建議發佈另一個問題。

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; 
} 

我認爲這可以幫助你