我有一个非常简单的JS代码 - 目标是用实时'替换带有句点的逗号。 (即,当用户输入时)。例如,当用户键入:43,45时,应将其自动更正为:43.65等:
<input onkeyup="this.value=this.value.replace(',','.')" type="number">
&#13;
但它不起作用(至少在Firefox中) - 当我输入一些数字并添加一个逗号时,该数字完全消失。当我键入一个句点时,它会被删除。所以它根本没有按预期工作......
我也尝试过:
<input onkeyup="this.value=this.value.replace(/,/g, '.')" type="number">
&#13;
但它也不起作用......
答案 0 :(得分:1)
有可能,但仅限于input
类型text
。 input
类型number
不允许任何其他符号而非数字。
var input = document.getElementById('input');
function validate(){
input.value = input.value.replace(/,/g, ".");
}
&#13;
<input onkeyup="validate()" type="text" id='input'>
&#13;
答案 1 :(得分:1)
尝试以下代码
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;
答案 2 :(得分: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;
}
&#13;
<input id='numberInput' onkeyup="replace(this)" type="text">
&#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;
}
我认为这有助于你