Javascript验证控件

问题描述:

我写了一个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; 
    } 


    } 
} 

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

我只是需要解析整数的值为了能够比较它们。

感谢所有您的帮助

+0

因为'parseInt()'可以返回'NaN'(即如果将字符串传递给它),所以要注意''parseInt()'',这可能会导致其他问题,并且如果用户显示在屏幕上某处,通常会让用户感到困惑。 [Brendon Cheves's](http://*.com/a/10097688/1304626)解决方案更强大一点;结合他和你的并且检查'NaN'将是明智的。 – 2012-04-20 02:31:36

是否有总是在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