2012-04-10 10 views
0

私は自分のフォームにいくつかの簡単なフィールドを検証するためのjavascriptを書いています。私の問題は、フォームにエラーがない場合でもコードが機能することです。Javascriptの検証コントロール

は、具体的には、if(openHour > closeHour)

でエラーがスローされます。これは、コード

function checkForm() 
{ 
    var openHour; 
    var closeHour; 
    var i; 

    for(i=1;i<8;i++) 
    { 
    openHour = document.getElementById("openHours" + i).value; 
    closeHour= document.getElementById("closeHours" + i).value; 

    if(openHour > closeHour) 
    { 
    document.getElementById('error').innerHTML= "Opening Error at " + i; 
    return false; 
    } 
    if(openHour == "0" && closeHour > 0) 
    { 
    document.getElementById('error').innerHTML= "Closing Error at " + i; 
    return false; 
    } 


    } 
} 

答えて

1
openHour = parseInt(document.getElementById("openHours" + i).value); 
closeHour = parseInt(document.getElementById("closeHours" + i).value); 

私はちょうど解析するのに必要それらの値を比較できるようにするために、値を整数に変換します。すべて

+0

'NaN'(アルファ文字列が渡された場合)を返すことがあるので、' parseInt() 'に注意してください。これは他の問題を引き起こし、画面上のどこかに表示されるとユーザに混乱させることがあります。 [Brendon Chevesの](http://stackoverflow.com/a/10097688/1304626)ソリューションはもう少し堅牢です。あなたとあなたのものを組み合わせて、NaNをチェックすることは賢明でしょう。 –

2

は常にopenHoursとcloseHoursフィールドのデフォルト値があるのですか?

例えば、いくつかのデフォルト値を設定してみてください:

var openHour = 0; 
var closeHour = 0; 

その後openHoursとclosedHoursがそれらを割り当てる前に、それらの値を持っているかどうかを確認します。

if (document.getElementById("openHours" + i).value != null && document.getElementById("openHours" + i).value != "") 
    openHour = document.getElementById("openHours" + i).value; 


if (document.getElementById("closeHours" + i).value != null && document.getElementById("closeHours" + i).value != "") 
    closeHour = document.getElementById("closeHours" + i).value; 
+0

あなたの助けのおかげ

おかげで、私はそれが – Geo

+0

のNopを働いた場合、あなたが知ってもらおう、それはまだそれが – Geo

+0

はあなたのHTMLを投稿することができてはならないときに行きますか?そのようにデバッグする方がはるかに簡単です。ありがとう。 –

関連する問題