2015-07-11 47 views
0

我有一個單位轉換腳本;我的HTML包含單選按鈕(選擇單位),輸入字段,輸出字段和按鈕。Javascript:確保輸入僅爲數字

這裏是我的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(); 

我想補充一點,就是確保)的空輸入欄不被認爲是「0」,和b)之外的其他東西號碼不顯示「NaN」作爲答案。在這兩種情況下,我只是想讓我的輸出不返回任何內容(空白)。我不希望它什麼也沒有,以防用戶在提交正確的數字後提交空白字段或無效值(我認爲這會導致上一個答案仍然顯示。)

怎麼辦我寫這個?我假設我應該使用條件,但我不知道哪些條件。我做了一些研究,顯然使用isNaN()並不完全準確,至少在這種情況下不是。

我在哪裏把代碼放在頁面加載觸發的函數或按鈕觸發的函數中?

我還在學習如此,如果可能的話,我會非常感謝解釋與編輯的代碼。謝謝!

+0

可能重複的[如何檢查一個變量是否是一個整數在Javascript?](http://stackoverflow.com/questions/14636536/how-to-check-if-a-variable-is-an-integer -in-javascript) – CoderNeji

+0

@CoderNeji它不一定是一個整數在這裏,只是一個數字。 –

回答

0

裏面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

+0

感謝您真正閱讀我的整個問題並向我解釋過程!這是超級有用的。 – Nils

+0

@Nils沒問題!很高興我能幫到 –

0

添加以下函數來檢查Integer中的值。

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 = ''; 
     } 
    }); 

這將確保當提供有效的整數,然後只將它轉換,否則回答保留爲空。

有關如何檢查整數檢查這進一步閱讀:

How to check if a variable is an integer in JavaScript?

編輯:設置答案空字符串時數不整。

+0

當輸入不是一個整數時,它什麼也不做。 OP希望接受非整數,並且當輸入不是有效數字時,希望「輸出不返回任何內容(空白)」。這既不符合這些資格。編輯 –

+0

將答案字段設置爲空。 – IJR

+0

好的,但仍然拒絕非整數,它不應該。 –

相關問題