Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

How to Validate Multiple Dates in Same Form

Status
Not open for further replies.

heathL

MIS
Jan 30, 2003
10
US
Here is the script I'm using for the date validation for ReleaseDate (in Red) but I also need to validate for EffectiveDate. How would I incorporate that? I am new at this so can use any help. Thanks.


<script language = &quot;Javascript&quot;>

// Declaring valid date character, minimum year and maximum year
var dtCh= &quot;/&quot;;
var minYear=1900;
var maxYear=2100;

function isInteger(s){
var i;
for (i = 0; i < s.length; i++){
// Check that current character is number.
var c = s.charAt(i);
if (((c < &quot;0&quot;) || (c > &quot;9&quot;))) return false;
}
// All characters are numbers.
return true;
}

function stripCharsInBag(s, bag){
var i;
var returnString = &quot;&quot;;
// Search through string's characters one by one.
// If character is not in bag, append to returnString.
for (i = 0; i < s.length; i++){
var c = s.charAt(i);
if (bag.indexOf(c) == -1) returnString += c;
}
return returnString;
}

function daysInFebruary (year){
// February has 29 days in any year evenly divisible by four,
// EXCEPT for centurial years which are not also divisible by 400.
return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
for (var i = 1; i <= n; i++) {
this = 31
if (i==4 || i==6 || i==9 || i==11) {this = 30}
if (i==2) {this = 29}
}
return this
}

function isDate(dtStr){
var daysInMonth = DaysArray(12)
var pos1=dtStr.indexOf(dtCh)
var pos2=dtStr.indexOf(dtCh,pos1+1)
var strMonth=dtStr.substring(0,pos1)
var strDay=dtStr.substring(pos1+1,pos2)
var strYear=dtStr.substring(pos2+1)
strYr=strYear
if (strDay.charAt(0)==&quot;0&quot; && strDay.length>1) strDay=strDay.substring(1)
if (strMonth.charAt(0)==&quot;0&quot; && strMonth.length>1) strMonth=strMonth.substring(1)
for (var i = 1; i <= 3; i++) {
if (strYr.charAt(0)==&quot;0&quot; && strYr.length>1) strYr=strYr.substring(1)
}
month=parseInt(strMonth)
day=parseInt(strDay)
year=parseInt(strYr)
if (pos1==-1 || pos2==-1){
alert(&quot;The date format should be : mm/dd/yyyy&quot;)
return false
}
if (strMonth.length<1 || month<1 || month>12){
alert(&quot;Please enter a valid month&quot;)
return false
}
if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
alert(&quot;Please enter a valid day&quot;)
return false
}
if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
alert(&quot;Please enter a valid 4 digit year between &quot;+minYear+&quot; and &quot;+maxYear)
return false
}
if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
alert(&quot;Please enter a valid date&quot;)
return false
}
return true
}

function ValidateForm(){
var dt=document.form1.ReleaseDate
if (isDate(dt.value)==false){
dt.focus()
return false
}
return true

}
</script>
 
all you need to is run the function the second value
rate now you are running the validation on teh variable dt
here

function ValidateForm(){
var dt=document.form1.ReleaseDate

so you could throw a and condition in there if you wanted to and say

var dt2=document.form1.other field
if ((isDate(dt.value)==false && isDate(dt2.value)==false)){
return false
}
return true
}

and if you wanted to keep the focus attribute then validate them seperately as

function ValidateForm(){
var dt=document.form1.ReleaseDate
var dt2=document.form1.other field
if (isDate(dt.value)==false){
dt.focus()
return false
}
if(isDate(dt2.value)==false) {
dt2.focus()
return true
}
[color] _________________________________________________________
for the best results to your questions: FAQ333-2924
Is your question a most FAQ?? Find out here FAQ333-3048
 
apologies error in my copy/paste methods [lol]

if(isDate(dt2.value)==false) {
dt2.focus()
return false
} _________________________________________________________
for the best results to your questions: FAQ333-2924
Is your question a most FAQ?? Find out here FAQ333-3048
 
Thanks so much for your help. I made a few minor modifications and it worked like a charm.
H
 
Hello, I have about 30 date fields in my form, and I'd like to be able to check them using onChange or onBlur instead of onSubmit. Can anyone help me modify this code to be able to do this? Thanks.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top