Hello everyone, I am facing a problem with the start date and the end date.I have to do a validation such that the end date entered with the date picker should be equal to or greater than the start date.I have written the following code but it is not helping me out.Here is the code of javascript

<script language="javascript">

function validate()
{
if(document.tstest.timestamp1.value < document.tstest.timestamp.value)
{
alert('Please check the End date');
return false;
}
if(document.tstest.timestamp.value.length==0 && document.tstest.timestamp1.value.length==0) 
{
alert("Please enter the date");
return false;
}
return true;
}
</script>]

The html code is as follows. start date <input readonly type="Text" id="start" name="timestamp" size = "20" value=""> End date <input readonly type="Text" id="end" name="timestamp1" size = "20" value=""> The problem is that the validation is done only for days but not for the month and year.If you enter the start date as dd/mm/yyyy 12/8/2008 and End date as 11/8/2008 it will give an alert box but if you enter start date as 12/8/2008 and end date as 09/8/2008 than the form is submitted it is not validating. Please anyone can find a solution for this. thanks in advance.

Hello.
Is there no one who could solve my problem regarding the date validation.
I am still waiting for a reply from someone who could help me out of this.
Please give a response.

Member Avatar for langsor

You're trying to compare strings as if they were numbers ... that will give you unreliable results at best.

To compare as numbers you should do something like this ...

<script type="text/javascript">

// grab and split date values
var start = document.getElementById('start').value;
var sarr = start.split('/');
var sday = parseInt( sarr[0] );
var smo = parseInt( sarr[1] );
var syr = parseInt( sarr[2] );

var end = document.getElementById('end').value;
var earr = end.split('/');
var eday = parseInt( earr[0] );
var emo = parseInt( earr[1] );
var eyr = parseInt( earr[2] );

// here we must compare date values
validate();

function validate () {
  switch ( true ) {
    case syr > eyr:
    alert( 'please pick an end year later than start year' );
    return false;
    case smo > emo:
    alert( 'please pick an end month later than start month' );
    return false;
    case sday > eday:
    alert( 'please pick an end day later than start day' );
    return false;
    default:
    document.getElementById('my_form_id').submit();
  }
}
</script>

I haven't actually tested the above script, so there might be some hidden (or not so hidden) hitch in it, but that type of thing is what you're looking for -- I believe.

Good luck

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.