Link to home
Start Free TrialLog in
Avatar of khan02
khan02Flag for United States of America

asked on

How do i block past dates in coldfusion flash form

i have two fields for date in my form (start Date and End date). when the user selects a start date, i want them to choose a date between today and future, not a date that has already passed. i have seen that on expedia.com, i think there might be some JS or action scripts ned to be integrated, but not sure how. any idea will be helpful.
<cfparam name="start_date" default="">
<cfparam name="end_date" default=""> 
 
	<cfform format="Flash" skin="haloOrange" height="340" width="780" action="components/actions.cfc?method=insertData">
			
		
	  		<cfformgroup type="panel" label="ENTER DATE">
	  	 		<cfinput type="dateField" name="start_date" label="Start Date" width="100" value="#start_date#" required="true">
	  	 		<cfinput type="dateField" name="end_date" label="End Date" width="100" value="#end_date#" required="true">
				<cfinput type="hidden" name="type" value="d" >
			</cfformgroup>
			
		
			<cfformgroup type="horizontal" style="horizontalAlign:center">
				<cfinput type="Submit" name="save" value="Save" width="100">
				<cfinput type="Submit" name="apply" value="Submit" width="100">   
			</cfformgroup>
		</cfformgroup> 
	</cfform>

Open in new window

Avatar of _agx_
_agx_
Flag of United States of America image

Try this tip:
http://www.justskins.com/forums/setting-datefield-selectablerange-5882.html
<cfparam name="start_date" default="">
<cfparam name="end_date" default=""> 
 
<cfform name="yourForm" format="Flash" skin="haloOrange" height="340" width="780" onLoad="runOnLoad();" action="components/actions.cfc?method=insertData" >
	<cfoutput>
	<cfformitem type="script">
		function runOnLoad() 
		{
			var strDate:String = "#dateFormat(now(), 'yyyy-m-d')#";
			var parts:Array = strDate.split("-");
			var y = parts[0];			 
			var m = parts[1];			 
			var d = parts[2];
			// Month numbers are 0-11 (January to December)
			var startAfter:Date = new Date(y, m-1, d);
			start_date.selectableRange={rangeStart: startAfter};	
		}
	</cfformitem>
	</cfoutput>
	<cfformgroup type="panel" label="ENTER DATE">
    	<cfinput type="dateField" name="start_date" label="Start Date" width="100" value="#start_date#" required="true">
		<cfinput type="dateField" name="end_date" label="End Date" width="100" value="#end_date#" required="true">
		<cfinput type="hidden" name="startAfterDate" value="#dateFormat(now(), 'yyyy-m-d')#">
        <cfinput type="hidden" name="type" value="d" >
	</cfformgroup>
                        
                
    <cfformgroup type="horizontal" style="horizontalAlign:center">
    	<cfinput type="Submit" name="save" value="Save" width="100">
        <cfinput type="Submit" name="apply" value="Submit" width="100">   
    </cfformgroup>
</cfform>

Open in new window

Avatar of khan02

ASKER

this looks good but, there are some problems. it is not allowing me to pick a date from past month which is fine, but it also should not let me pick a past date of current month. so, today is april 2nd, but it does allow me to pick date as april 1st, which supposed to be block me to pick april 1st.

also, when i click to next button to pick a day from next month (month May), then the calender doesn't let me allow to come back current month (April). can these be fixed.... or at least it shouldn't allow me to choose past day (i'e April 1st)...
Are you using the exact example posted above, or did you modify it?  Because it works perfectly for me (ie April 1st is disabled and after selecting a different month, it does allow navigation back to previous months)
Avatar of khan02

ASKER

i copied and pasted your example and i got the following error,

 Illegal usage of actionscript org.apache.oro.text.regex.Perl5Pattern@3cc532.
The following actionscript commands are not allowed: "import, new, delete, createChild, loadmovie, duplicateMovieClip, AttachMovie, registerclass, createTextField, __proto__, uiobjectdescriptor, createclassobject, createemptyobject, createchildatdepth, createchildren, createclasschildatdepth, createobject, createchild, webservice, httpservice, remoteobject".
 

Then i took of 'new' from the script on line >>var startAfter:Date = new Date(y, m-1, d); and replaced with var startAfter:Date =  Date(y, m-1, d);

and the form started loading.

i don't know if there is any issue with my coldfusion verion, cause i am using
ColdFusion Server Developer        7,0,2,142559
Template       /CFD/dates.cfm
Time Stamp       02-Apr-09 11:38 AM
Locale       English (US)
User Agent       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)
Remote IP       127.0.0.1
Host Name       localhost
 
ASKER CERTIFIED SOLUTION
Avatar of _agx_
_agx_
Flag of United States of America image

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
Avatar of khan02

ASKER

perfect ....that works !!!!!!!!!!!! yahooooooo.....grate ....!!!

is there any tutorials or good links that you can provide, that i can learn action scripting and apply in my CF applications.