Link to home
Start Free TrialLog in
Avatar of jkharodia
jkharodia

asked on

validate Date Format dd/mm/yyyy

Hi
I have found the follwoing script which works great, however i would like to adapt it so that this can be applied to two date fields in my form

<script language=javascript>
/**********************************************************************/
/*Function name :isDigit(theDigit) */
/*Usage of this function :test for an digit */
/*Input parameter required:thedata=string for test whether is digit */
/*Return value :if is digit,return true */
/* else return false */
/**********************************************************************/
function isDigit(theDigit)
{
var digitArray = new Array('0','1','2','3','4','5','6','7','8','9'),j;

for (j = 0; j < digitArray.length; j++)
{if (theDigit == digitArray[j])
return true
}
return false

}
/*************************************************************************/
/*Function name :isPositiveInteger(theString) */
/*Usage of this function :test for an +ve integer */
/*Input parameter required:thedata=string for test whether is +ve integer*/
/*Return value :if is +ve integer,return true */
/* else return false */
/*function require :isDigit */
/*************************************************************************/
function isPositiveInteger(theString)
{
var theData = new String(theString)

if (!isDigit(theData.charAt(0)))
if (!(theData.charAt(0)== '+'))
return false

for (var i = 1; i < theData.length; i++)
if (!isDigit(theData.charAt(i)))
return false
return true
}
/**********************************************************************/
/*Function name :isDate(s,f) */
/*Usage of this function :To check s is a valid format */
/*Input parameter required:s=input string */
/* f=input string format */
/* =1,in mm/dd/yyyy format */
/* else in dd/mm/yyyy */
/*Return value :if is a valid date return 1 */
/* else return 0 */
/*Function required :isPositiveInteger() */
/**********************************************************************/
function isDate(s,f)
{var a1=s.split("/");
var a2=s.split("-");
var e=true;
if ((a1.length!=3) && (a2.length!=3))
{
e=false;
}
else
{if (a1.length==3)
var na=a1;
if (a2.length==3)
var na=a2;
if (isPositiveInteger(na[0]) && isPositiveInteger(na[1]) && isPositiveInteger(na[2]))
{ if (f==1)
{var d=na[1],m=na[0];
}
else
{var d=na[0],m=na[1];
}
var y=na[2];
if (((e) && (y<1000)||y.length>4))
e=false
if (e)
{
v=new Date(m+"/"+d+"/"+y);
if (v.getMonth()!=m-1)
e=false;
}
}
else
{
e=false;
}
}
return e
}
function checkDate(v)
{
var s=v.a.value;
if (isDate(s,0)) //dd/mm/yyyy format
return true;
else
alert("The inputted date value is not valid!");
return false;
}

function checkDate(v)
{
var s=v.a.value;
if (isDate(s,0)) //dd/mm/yyyy format
return true;
else
alert("The inputted date value is not valid!");
return false;
}

</script>

<form name="frmParam" id="frmParam" method="post" action="ReportRes2.asp" onSubmit="return checkDate(this)">
         
<input name="txtStartDate" type="text" id="a" />
       

The second text field is <input name="txtEndDate" type="text" id="txtEndDate" />.  Any help much appreciated as i have spent all day trying to figure this out
Ta
Avatar of searlas
searlas

Change:
function checkDate(v)
{
var s=v.a.value;
if (isDate(s,0)) //dd/mm/yyyy format
return true;
else
alert("The inputted date value is not valid!");
return false;
}

to:
function checkDate(field)
{
var s=field.value;
if (isDate(s,0)) //dd/mm/yyyy format
return true;
else
alert("The inputted date value is not valid!");
return false;
}

And change
 onSubmit="return checkDate(this)"

to:
 onSubmit="return (checkDate(this.a) && checkDate(this.txtEndDate)"
Missing ")"

 onSubmit="return (checkDate(this.a) && checkDate(this.txtEndDate))"
ASKER CERTIFIED SOLUTION
Avatar of sajuks
sajuks

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial