2017-10-08 14 views
0

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、私はこのリンクを訪問しました、ありがとう、それは '、'例として、NaNがまだ返されているように10,000で働いていませんでした:-(助言をありがとう! – 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の中で、£を使うことができるようにしたかったのですが、小数点のある/なしのストレート数字以外のものがNaNを返したので、NaNの解決策が必要でした。実行するには実行可能な解決策があるかどうか分かりません。実装が複雑すぎるか、解決策がうまくいきません。 – maxballroom

+0

@maxballroom入力120,000ポンド、数値として適切に処理されるコンマを持つ数字 – Andrew

+0

@maxballroomその部分をキャッチしていませんでした。することが。 '1200,00'、'£120,000£ 'のようなコンマとポンドの不正な組み合わせを許可しますか?あるいは、「£120,000」があなたが実数になるように強制する唯一のものでしょうか? – Andrew

関連する問題