2017-12-30 10 views
0

私は自分のサイトでクライアント側の検証をテストしています。JSが条件を満たしていない場合、正しい結果が返されない

var budget = document.forms["jobSubmit"]["currency-field"].value; 
var price = budget.replace("$", ""); 


if (Number(price) >= 9999) { 
    alert("Budgets have a maximum of 9999 US dollars."); 
    return false; 
} else { 
alert(price); 
} 

return false; 

私は私の価格フィールドに簡単なより大きい条件をしようとすると、それが正しい結果を返しません。

だから、私が11111を入れたにもかかわらず、より大きいものは働いていない。

enter image description here

私は< 10に切り替えしていた場合は、例えば、それだけで正常に動作しますと10の下にあるすべての数字は、条件がトリガされます。

どうしてですか?

+0

いくつかの基本的なデバッグ機能を試してみてください。 'Number(11,111)'は '11'です – j08691

+2

あなたの写真には無効な番号である' 11,111.00'の真ん中にカンマがあります。カンマを削除する必要があります。そうしないと、 'Number(" 11,111.00 ")'がNaNを返します。 – 4castle

+0

ああ、そうです。そのような単純なものだったと考えました。ありがとう。 –

答えて

1

は、以下のことを試してみてください。

var budget = "$111,111" 
 
var price = budget.replace("$", "").replace(',',''); 
 

 

 
if (Number(price) >= 9999) { 
 
    alert("Budgets have a maximum of 9999 US dollars."); 
 
    //return false; 
 
} else { 
 
    alert(price); 
 
}

+0

依存関係に気にしない場合は、ライブラリ "numeric.js"が書式設定された数値の解析をうまく処理します。 –

+0

@カドミウム、そうかもしれませんが、そのようなライブラリを使用するかどうかはOPの関心事です。 – Mamun

+0

無効な文字を一度にすべて削除してください: 'budget.replace(/ [^ 0-9。]/g、" ")' – 4castle

関連する問題