当浮点部分为空时,从 JQuery 中的输入元素获取数字值不起作用

get number value from input element in JQuery not works when float parts empty

本文关键字:输入 元素 获取 不起作用 数字 JQuery 点部      更新时间:2023-09-26

我想编写一个货币转换器,只允许整数和浮点数。所以我检测输入变化并进行一些计算。HTML 代码段如下所示:

<input type="number" id="currency">

JS是:

$("#currency").on("input", function(e){
  var value = this.value
  console.log(value)
});

一切正常,除了输入为"12."时,值为空字符串?我想要的实际上是 12。如何解决问题?任何帮助将不胜感激。片段的 JSfiddle

这是因为您正在使用不允许除数字(包括浮点数)以外的任何输入的input type="number"

但是你把字符串或字符作为输入,你会看到空的日志语句,在做parseInt(this.value)时它会记录NaN

因此,如果您仍然想提供字符串/数字作为输入,您可以使用input type="text"

<input type="text" id="currency">

Input type="number"表示包括float, integer在内的任何数字,并且不允许输入文本。所以最好的解决方案可能是Input type="text",如果你想要精度,你可以通过 toFixed 方法,如下例所示

$("#currency").on("input", function(e){
var value = this.value
if(isNumeric(value)){
alert(parseInt(value));
} 
else{
alert("text")
}
   });
function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="currency">

您的问题与您的本地化有关。

正如大家所确认的那样,<input type="number">允许输入整数浮点数。

那么在输入 12. 时,为什么你会得到一个空的结果,而其他人得到 12?
因为他们的小数点是点,而你的小数点是别的东西!

例如:在我自己的系统上,小数点是逗号,键入12.时得到空结果,键入12,时得到 12 的结果。