Javascript - 在您输入

时间:2017-02-17 22:11:21

标签: javascript

我有一个非常简单的JS代码 - 目标是用实时'替换带有句点的逗号。 (即,当用户输入时)。例如,当用户键入:43,45时,应将其自动更正为:43.65等:



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

但它不起作用(至少在Firefox中) - 当我输入一些数字并添加一个逗号时,该数字完全消失。当我键入一个句点时,它会被删除。所以它根本没有按预期工作......

我也尝试过:

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

但它也不起作用......

4 个答案:

答案 0 :(得分:1)

有可能,但仅限于input类型textinput类型number不允许任何其他符号而非数字。

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

答案 1 :(得分:1)

尝试以下代码

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

答案 2 :(得分:1)

进一步解释这里发生了什么;如果用户将数字或小数以外的任何内容输入到类型编号为<input type="number">的输入中,则该值将自动为空。这就是您无法按照自己的方式操作输入类型编号的原因。如果你想实现你要做的事情,你需要使用输入类型文本<input type="text">并编写几个javascript函数来创建所需的效果。

&#13;
&#13;
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;
}
&#13;
<input id='numberInput' onkeyup="replace(this)" type="text">
&#13;
&#13;
&#13;

此代码应该从一个类型为text的输入框开始,它将排除除数字和小数之外的任何内容,同时将任何逗号转换为小数。

如果您想在输入框的右侧部分设置计数器,则需要添加两个按钮;增量和减量器,以及将文本输入的输入值转换为double&amp;的函数。根据按下的按钮增加或减少双倍。如果您在使用该部分时遇到问题,我建议您发布另一个问题。

答案 3 :(得分: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;
}

我认为这有助于你