Reputation: 3200
I wrote a Javascript to validate a few simple fields on my form. My issue is that the code works even when there are no errors on the form.
Specifically it throws an error at if(openHour > closeHour)
This is the code:
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;
}
}
}
Upvotes: 0
Views: 378
Reputation: 3200
openHour = parseInt(document.getElementById("openHours" + i).value);
closeHour = parseInt(document.getElementById("closeHours" + i).value);
I just needed to parse the values to integers in order to be able to compare them.
Thanks all for your help
Upvotes: 1
Reputation: 397
Are there always default values in the openHours and closeHours fields?
Try setting some defaults, for example:
var openHour = 0;
var closeHour = 0;
Then check to see if openHours and closedHours have values in them before assigning them:
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;
Upvotes: 2