如何使用输入类型编号中的替换javascript删除点?
当我尝试将999.
填入输入时。为什么不删除点.
我该怎么办?
<input name="test" id="iid" onKeyUp="test_fn(this.value)" type="number">
<script>
function test_fn(test_value){
var test_value = test_value.replace(/[^0-9]+/g, "");
document.getElementById("iid").value = test_value;
}
</script>
答案 0 :(得分:2)
也许你想不允许在输入字段中输入点。这是一种方法:
document.getElementById('iid').addEventListener('keypress', test_fn);
function test_fn(e){
if (e.charCode == 46) e.preventDefault(); // not allowed to type .
}
<input name="test" id="iid" type="number">
答案 1 :(得分:1)
我不知道这种行为的原因。我为解决这个问题所做的是,每次按下一个键,我都会清除input
的内容。
我已将下面给定的行添加到您的脚本中,每次按下某个键时都会重置input
。
document.getElementById("iid").value = "";
请参阅下面的代码段
function test_fn(test_value){
var test_value = test_value.replace(/[^0-9]+/g, "");
document.getElementById("iid").value = "";
document.getElementById("iid").value = test_value;
}
<input name="test" id="iid" onKeyUp="test_fn(this.value)" type="number">
<强>更新强>
正如@ AssafiCohen-Arazi在评论中提到的,如果有人长按.
键,这个答案将被证明是错误的。因此,更好的解决方案是上面@James answer中提到的解决方案。
更新2
找出您获得稳定结果的原因。这完全是因为您的input
类型是数字。您只需将input
类型更改为text
,您的代码即可完美运行。
请参阅此fiddle
请参阅下面的代码段
function test_fn(test_value){
var test_value = test_value.replace(/[^0-9]/g, "");
document.getElementById("iid").value = test_value;
}
<input name="test" id="iid" onKeyUp="test_fn(this.value)" type="text">
答案 2 :(得分:0)
这对我来说很好,试试这个:
function test_fn(e){
var charCode = e.which || e.keyCode;
if (charCode >= 48 && charCode <= 57 || charCode >= 96 && charCode <= 105) return true;
e.preventDefault();
}
<input name="test" id="iid" onKeyDown="test_fn(event)" type="number">
答案 3 :(得分:0)
<input name="test" id="iid" onKeyUp="test_fn(this.value)" type="text">
<script>
function test_fn(test_value){
var test_value = test_value.replace(/[^0-9]+/g, "");
document.getElementById("iid").value = test_value;
}
</script>
答案 4 :(得分:0)
输入字段中的type=number
触发value sanitization algorithm,因此您无法从输入字段获取实际值,除非它是有效的浮点数。
您可以使用text
类型解决此问题(因为您已使用正则表达式/[^0-9]+/g
<input name="test" id="iid" onKeyUp="test_fn(this.value)" type="text">
<script>
function test_fn(test_value) {
var test_value = test_value.replace(/[^0-9]+/g, "");
document.getElementById("iid").value = test_value;
}
</script>