如何使用输入类型编号中的替换javascript删除点?

时间:2017-08-19 17:44:08

标签: javascript jquery input

如何使用输入类型编号中的替换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>

5 个答案:

答案 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)

请参阅此fiddle

我不知道这种行为的原因。我为解决这个问题所做的是,每次按下一个键,我都会清除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>

另请参阅:How to get the raw value an field?