2012-04-10 100 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

因爲'parseInt()'可以返回'NaN'(即如果將字符串傳遞給它),所以要注意''parseInt()'',這可能會導致其他問題,並且如果用戶顯示在屏幕上某處,通常會讓用戶感到困惑。 [Brendon Cheves's](http://stackoverflow.com/a/10097688/1304626)解決方案更強大一點;結合他和你的並且檢查'NaN'將是明智的。 – 2012-04-20 02:31:36

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 2012-04-11 20:18:15

+0

NOP,它仍然去的時候它不應該 – Geo 2012-04-13 14:56:04

+0

可您發佈的HTML?這樣調試會容易得多。謝謝。 – 2012-04-13 17:27:30