2017-10-08 117 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