javascript – 当我输入时,如何格式化输入框文本

如何在html输入框中输入数字时格式化数字?

所以例如,我想输入数字2000,当我键入第4位时,文本(当前显示在文本框中)将自动格式化为2,000(用逗号).

//my modified code based on Moob answer below

<input type="text" class="formattedNumberField" onkeyup="myFunc()">

//jQuery
$(".formattedNumberField").on('keyup', function(){
    var n = parseInt($(this).val().replace(/\D/g,''),10);
    $(this).val(n.toLocaleString());
});

function myFunc(){
// doing something else
}

虽然这个代码工作完美,如Moob Fiddle所示,它不能在我的结束可能是因为我在输入框中有另一个onkeyup事件???

纯JS(Sans jQuery):

var fnf = document.getElementById("formattedNumberField");
fnf.addEventListener('keyup', function(evt){
    var n = parseInt(this.value.replace(/\D/g,''),10);
    fnf.value = n.toLocaleString();
}, false);

Native JS Example Fiddle

使用jQuery:

$("#formattedNumberField").on('keyup', function(){
    var n = parseInt($(this).val().replace(/\D/g,''),10);
    $(this).val(n.toLocaleString());
    //do something else as per updated question
    myFunc(); //call another function too
});

With jQuery Example Fiddle

允许小数:

$("#formattedNumberField").on('keyup', function(evt){
    if (evt.which != 110 ){//not a fullstop
        var n = parseFloat($(this).val().replace(/\,/g,''),10);
        $(this).val(n.toLocaleString());
    }
});

Obligatory Example

翻译自:https://stackoverflow.com/questions/19470499/how-to-format-input-box-text-as-i-am-typing-it

转载注明原文:javascript – 当我输入时,如何格式化输入框文本