Geo
Geo

Reputation: 3200

Javascript validation control

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

Answers (2)

Geo
Geo

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

Brendon Cheves
Brendon Cheves

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

Related Questions