2017-10-08 10 views
0

구분 기호를 입력하는 방법 (예 : NaN 메시지를 가져 오지 않고 12,000)을 찾아야하며 대신 할 수 없다면 메시지를 표시해야합니다. 나는 다양한 사이트와 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, 나는이 링크를 방문, 덕분에, 그것은 ','예를 들어, 1 만 NaN으로 반환되지 않습니다 여전히 :-(조언을 주셔서 감사합니다! – maxballroom

답변

0

NaN을 추가하는 데 문제가 있습니까? 을 확인 하시겠습니까?

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 내에서 사용할 수 있기를 원했지만 소수점이 있거나없는 스트레이트 번호 이외의 다른 값은 NaN을 반환했기 때문에 isNaN 솔루션이 필요했습니다. 감사합니다. Andrew,이게 정말 도움이되었습니다. 구현하기에는 너무 복잡하거나 솔루션이 잘 작동하지 않는 것처럼 문제가 해결 될 수있는지를 아는 것조차 없습니다. – maxballroom

+0

@maxballroom 120,000 파운드를 입력하십시오. 숫자로 계속 처리 할 수있는 쉼표가 붙은 숫자입니까? – Andrew

+0

@maxballroom @maxballroom 그 부분을 잡아 내지 못했습니다. 전혀 어렵지는 않지만 원하는 것은 얼마나 엄격한가에 달려 있습니다. 되려고. '1200,00','£ 120,000 £ '와 같이 쉼표와 파운드의 잘못된 조합을 허용 하시겠습니까? 아니면 '£ 120,000'만이 진짜 숫자가되도록 강요 할 것입니까? – Andrew