Javascript:确保输入仅为数字

Javascript:确保输入仅为数字,javascript,validation,input,numbers,Javascript,Validation,Input,Numbers,我有一个单位转换脚本;MyHTML包含单选按钮(用于选择单位)、输入字段、输出字段和按钮 下面是我的Javascript文件示例: [...] window.addEventListener("load", function(){ document.getElementById("convert").addEventListener("click", function(){ var initial = document.getElementById("initial")

我有一个单位转换脚本;MyHTML包含单选按钮(用于选择单位)、输入字段、输出字段和按钮

下面是我的Javascript文件示例:

[...]

window.addEventListener("load", function(){
    document.getElementById("convert").addEventListener("click", function(){
        var initial = document.getElementById("initial").value;
        document.getElementById("answer").innerHTML = convertObj.converted(initial);    
    });

[...]

});

function ConvertClass(){}

ConvertClass.prototype.converted = function(initialAmount){
    if(document.getElementById("kilograms").checked) {
        this.calculation = this.multiply(initialAmount, 2.2046);
    } else if(document.getElementById("pounds").checked) {
        this.calculation = this.divide(initialAmount, 2.2046);
    }
    return this.calculation.toFixed(2);
}

[...]

var convertObj = new ConvertClass();
我想添加一些内容,确保a)空输入字段不被视为“0”,b)数字以外的内容不显示“NaN”作为答案。在这两种情况下,我只希望我的输出不返回任何内容(空白)。我不希望它什么都不做,以防用户在提交正确的数字后提交一个空白字段或一个无效值(我认为这会导致仍然显示上一个答案)

我该怎么写?我假设我应该使用条件,但我不知道是哪些条件。我做了一些研究,显然使用isNaN()并不完全准确,至少在这种情况下是不准确的

在页面加载触发的函数或按钮触发的函数中,我应该将代码放在哪里


我还在学习,所以,如果可能的话,我真的很感激解释和编辑的代码。谢谢大家!

内部
ConvertClass.prototype.converted
在函数开头添加:

// this coerces it to a number instead of a string
// or NaN if it can't convert to a number
initialAmount = initialAmount.length > 0 ? +initialAmount : 0/0;

// if not a number, return empty string
if (isNaN(initialAmount)) {
    return "";
}

如果输入为空字符串
0/0
的计算结果为
NaN

添加以下函数以检查值是否为整数

function isInt(value) {
  return !isNaN(value) && 
         parseInt(Number(value)) == value && 
         !isNaN(parseInt(value, 10));
}
按如下方式更改加载函数:

window.addEventListener("load", function(){
    document.getElementById("convert").addEventListener("click", function(){
        var initial = document.getElementById("initial").value;
        if(isInt(initial)){
            document.getElementById("answer").innerHTML = convertObj.converted(initial); 
        }else{
            document.getElementById("answer").innerHTML = '';
        }   
    });
这将确保当提供有效整数时,只有它会转换,否则答案将保持为空

有关如何检查整数的进一步阅读,请检查以下内容:


编辑:当数字不是整数时,将应答设置为空字符串。

可能重复@CoderNeji。此处不必是整数,只需是数字。当输入不是整数时,此操作不起任何作用。OP希望接受非整数,并希望在输入不是有效数字时“输出不返回任何内容(空白)”。这两个条件都不符合。好吧,但仍然拒绝接受非整数,这是不应该的。谢谢你阅读了我的整个问题,并向我解释了这个过程!这非常有用。@Nils没问题!很高兴我能帮忙