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);
我只是需要解析整数的值为了能够比较它们。
感谢所有您的帮助
答
是否有总是在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;
因为'parseInt()'可以返回'NaN'(即如果将字符串传递给它),所以要注意''parseInt()'',这可能会导致其他问题,并且如果用户显示在屏幕上某处,通常会让用户感到困惑。 [Brendon Cheves's](http://*.com/a/10097688/1304626)解决方案更强大一点;结合他和你的并且检查'NaN'将是明智的。 – 2012-04-20 02:31:36