2016-04-09 5 views
0

金利の検証に問題があります。条件は次のとおりです。 (存在しなければなりません。数値でなければなりません。許容値:3.000から16.000まで)。数字列の特定の値の検索

第1桁目が数字の後に、次の数字が1であるかどうかを判断しようとしています。すなわち "2N34"はエラーとして出現するはずです。毎回私はforループを使用しようとしましたが、うまくいきません。私は誰かがこれをテストし、適切なエラーを提出する正しい方向に私を指すことができるかどうか疑問に思っています。

JAVASCRIPT FUNCTION:

function valIntRate(errMessages){ 

var rate = document.getElementById("intRate").value; 
if (rate.length === 0){ 
    errMessages += "Interest rate can't be left empty"; 
} 


if (rate < 3 || rate > 16){ 
     errMessages += "Rate must be between 3 and 16 inclusive"; 
} 

return errMessages; 
} 

HTML(入力フィールドがある場合):

<label class="label"> Interest Rate </label> 

     <input type="text" name="intRate" id="intRate" size="7" maxlength="6" > 
+0

使用 '&&'のようなparseFloatはを使用することができます。 – Nonemoticoner

+0

@Nonemoticonerそれはこの文脈で意味をなさない。 &&を使用すると、rate <3 _and_rate> 16かどうかを尋ねられますが、いつでもその条件の1つだけが真である可能性があるので、常にFalseを返します。 –

+0

@AkshatMahajan私は後で、それ以上のものも間違っていることを知った – Nonemoticoner

答えて

1

使用ますisNaN(入力)。数値を検証します。これはうまくいくはずです。

function valIntRate(errMessages) { 
var rate = document.getElementById("intRate").value; 
if (rate.length === 0) { 
    errMessages += "Interest rate can't be left empty"; 
} 
if (!(rate >= 3 && rate <= 16)) { 
    errMessages += "Rate must be between 3 and 16 inclusive"; 
} 
if (isNaN(rate)) { 
    errMessages += "Rate must be a number"; 
} 
return errMessages; 
} 
0

あなたはルールの数に基づいて文字列を一致させることができ、regular expressionsに見てみたいことがあります。あなたがtypeofisNaN、正規表現を使用することができ、または他の内蔵していない場合

if (rate.match(/^\d*\.?\d+$/)) { 
    // rate only has numbers 
} else { 
    // rate has other characters 
} 

編集:あなたのケースでは、このようなものは、あなたの値は数字だけであることを検証することができますこの目的のための関数で、を明示的に文字ごとにループします(これは学校の割り当てですが、もしあなたがそれを最初に解決しようとすると良いでしょう)。内容をチェックし、数字か小数かをチェックします。 (また、唯一の小数点以下が存在していることを確実にしたい可能性が高いでしょう。)

ここであなたが始めるために何か:

var index, character; 
for (index = 0; index < rate.length; index += 1) { 

    character = rate[index]; 
    // Test to see if character is a digit or decimal here 

} 
+0

RegExを使用することはできません。 – 13design

+0

OK。私は私の答えを更新しました。 – Mark

0

あなたの代わりに `` ||のこの

function valIntRate(errMessages) { 

    var val = document.getElementById("intRate").value 
    var rate = parseFloat(val); 
    if (rate.toString() != val) 
    // any letters will be removed so if there is anything not number or dot this will be true 
    { 
    errMessages += "Must be a number"; 
    } 
    if (rate.length === 0) { 
    errMessages += "Interest rate can't be left empty"; 
    } 


    if (rate < 3 || rate > 16) { 
    errMessages += "Rate must be between 3 and 16 inclusive"; 
    } 

    return errMessages; 
} 
関連する問題