Javascript - 在您键入时自动将逗号替换为句点(对于输入类型= "number" )



我有一个非常简单的JS代码 - 目的是用'实时'中的一个期限替换逗号(即用户输入)。例如,当用户类型为:43,65时,应自动校正为:43.65等:

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

但它不起作用(至少在Firefox中) - 当我输入一些数字并添加逗号时,数字会完全消失。当我键入A期间时,将其删除。因此它根本无法正常工作...

我也尝试了:

<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'>

尝试以下代码

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

进一步解释这里发生了什么;如果用户将数字或小数以外的任何内容输入到类型编号<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">

此代码应该让您开始使用一个类型文本的输入框,该框将排除数字和小数以外的任何内容,同时将任何逗号转换为小数。

如果要在输入框的正确部分保留一个计数器,则需要添加两个按钮;增量器和减少器以及将文本输入的输入值转换为double&amp;的函数根据按下哪个按钮,将增加或减小双重。如果您在这一部分方面遇到麻烦,我建议您发布另一个问题。

函数要在文本框中添加逗号:

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

我认为这对您有帮助

最新更新