2017-10-08 46 views
0

我需要找到一種輸入分隔符的方式,例如,12,000而不會收到NaN消息,如果這樣做不能完成,則顯示消息。我已經瀏覽了各種網站和StackOverflow,並無法解決如何做到這一點(newbeeee問題)。目前的代碼如下:如何使用isNAN和分隔符問題

<script language="JavaScript" type="text/javascript"> 
function calcsavings() 

{ 

var B1=document.forms[0].B1.value; 
var B2n = Number("1516"); 
var B2=+B2n + +B1; 
var B4 = Number("0.138"); 

var t; 
for (i=0; i<document.forms[0].ITR.options.length; i++) 

{ 

if (document.forms[0].ITR.options[i].selected) 
t = document.forms[0].ITR.options[i].value; 
} 

var result=(B1/t-(B2/(1+B4)))*t 

result=Math.round(result); 

document.getElementById("childcaresavings").innerHTML=result; 

} 

</script> 

我已經剝離了我在發佈之前嘗試的非工作代碼。

+1

't'不是一個數字。 – taha

+0

嗨Xufox 5,我訪問了這個鏈接,謝謝,它沒有爲','例如,10,000作爲NaN返回仍然:-(感謝您的建議,但! – maxballroom

回答

0

添加NaN檢查result有什麼不對嗎?

result=Math.round(result); 
var htmlContent = Number.isNaN(result) ? "not a valid number" : result; 
document.getElementById("childcaresavings").innerHTML=htmlContent ; 

編輯:如果你正在尋找一個隨意使用的解析。您可以使用全球範圍內的replace,它將刪除除數字和句點之外的任何內容。

if (document.forms[0].ITR.options[i].selected) { 
    var inputVal = document.forms[0].ITR.options[i].value; 
    var removedCommas = inputVal.replace(/[,]/g, "") 
    if (removedCommas[0] === "£") { 
    removedCommas = removedCommas.slice(1, removedCommas.length) 
    } 
    t = removedCommas 
} 

這個作用:它需要你的輸入,並刪除所有逗號和£如果在輸入第一個字符。假設你的用戶輸入一個合理的條目,它會按預期處理這個數字。如果您的使用輸入任何奇怪的東西如/ * & #等,NaN將被退回,您的錯誤將顯示。

+0

安德魯,謝謝,這絕對完美的工作並簡單地改變了信息,理想情況下我想能夠使用£,或者在輸入框B1內,但是需要這個isNaN解決方案,因爲除了帶/不帶小數點的直接數字之外,任何其他的都返回NaN,謝謝Andrew,這真的有幫助。我們甚至不知道是否有一個可行的解決方案來解決這個問題,因爲它似乎要麼太複雜,要麼解決方案效果不好。 – maxballroom

+0

@maxballroom爲了清楚起見,您希望能夠輸入120,000英鎊一個有逗號的數字仍然可以作爲一個數字被正確處理? – Andrew

+0

@maxballroom沒有抓住那個部分,根本不難做到,但這取決於你想要的有多嚴格成爲。你會允許格式不正確的逗號和英鎊組合,例如「1200,00」,「120,000英鎊」嗎?或者「120,000英鎊」是否會成爲唯一一個你會強制成爲真實數字的東西? – Andrew