hefterr
asked on
CFINPUT TYPE=DATEFIELD Question
Hi,
I am using the pop up date field provided by CF by using the Type="datefield" :
<cfinput name="toDate" type="datefield" class="inputboxShort" required="no" size="40" maxlength="10" readonly="readonly" />
I'd like to open the field up for input and provide only my own server side edit of the field BUT CF seems to have an implied option of validate="date" (makes sense I guess). Is there a way to override that? I'd like to control the display of my own error message on the page.
Could I use a validate= regex that accepts anything or nothing? What is that regex?
I think I'll need to keep it read only?
Thanks in advance,
hefterr
I am using the pop up date field provided by CF by using the Type="datefield" :
<cfinput name="toDate" type="datefield" class="inputboxShort" required="no" size="40" maxlength="10" readonly="readonly" />
I'd like to open the field up for input and provide only my own server side edit of the field BUT CF seems to have an implied option of validate="date" (makes sense I guess). Is there a way to override that? I'd like to control the display of my own error message on the page.
Could I use a validate= regex that accepts anything or nothing? What is that regex?
I think I'll need to keep it read only?
Thanks in advance,
hefterr
I am not sure you need validation. Just make the field read only so the user can not update the date and in this case forget about validation
Yeah, I'd agree. Though I'm not sure it even does validation in the first place ...
ASKER
Hi agx,
I'm not sure what I'm doing differently - But I'm getting the error message page (see attached).
Maybe something on my server side code when I process the form.
Datefield.doc
I'm not sure what I'm doing differently - But I'm getting the error message page (see attached).
Maybe something on my server side code when I process the form.
Datefield.doc
ASKER
agx,
It as if I took you code and added a value statement :
<cfform method="post">
<cfinput name="toDate" type="datefield"
required="no" size="40" maxlength="10" value="mm/dd/yyyy" />
<input type="submit">
You would get the same error.
hefterr
It as if I took you code and added a value statement :
<cfform method="post">
<cfinput name="toDate" type="datefield"
required="no" size="40" maxlength="10" value="mm/dd/yyyy" />
<input type="submit">
You would get the same error.
hefterr
ASKER
OK guys, I found the problem.
I tried using in the CFFORM tag, Preservedata="yes". This is causing the problem. When I take it out it's OK. I tried using it as a short cut to redisplay the data on an error - but it causes a problem in this case.
I guess it's back to the drawing board. I'll have to repopulate manually the input date fields on an error.
Thanks,
hefterr
I tried using in the CFFORM tag, Preservedata="yes". This is causing the problem. When I take it out it's OK. I tried using it as a short cut to redisplay the data on an error - but it causes a problem in this case.
I guess it's back to the drawing board. I'll have to repopulate manually the input date fields on an error.
Thanks,
hefterr
ASKER
folks,
.... and you cannot give an invalid "value = " to the CFINPUT statement.
That was my ORIGINAL question to begin with. Soooooo, any suggestions?
hefterr
.... and you cannot give an invalid "value = " to the CFINPUT statement.
That was my ORIGINAL question to begin with. Soooooo, any suggestions?
hefterr
just make todays date as a default
Yeah, unfortunately preserveData has ... limitations. If you supply a "value" (or if preserveData does), CF will validate that "value" on the server side. So if you want to use preservedata you'll have to manually handle that field.
Try deleting that key if it is NOT a date.
<cfparam name="form.toDate">
<cfform method="post" Preservedata="yes">
<cfif NOT isDate(FORM.toDate)>
<cfset structDelete(FORM, "toDate")>
</cfif>
<cfinput name="toDate" type="datefield"
required="yes" size="40" maxlength="10"
/>
<input type="submit">
</cfform>
Try deleting that key if it is NOT a date.
<cfparam name="form.toDate">
<cfform method="post" Preservedata="yes">
<cfif NOT isDate(FORM.toDate)>
<cfset structDelete(FORM, "toDate")>
</cfif>
<cfinput name="toDate" type="datefield"
required="yes" size="40" maxlength="10"
/>
<input type="submit">
</cfform>
Correction:
<cfparam name="form.toDate" default="">
<cfform method="post" Preservedata="yes">
<cfif NOT isDate(FORM.toDate)>
<cfset structDelete(FORM, "toDate")>
</cfif>
<cfinput name="toDate" type="datefield" size="40" maxlength="10" />
<input type="submit">
</cfform>
<cfparam name="form.toDate" default="">
<cfform method="post" Preservedata="yes">
<cfif NOT isDate(FORM.toDate)>
<cfset structDelete(FORM, "toDate")>
</cfif>
<cfinput name="toDate" type="datefield" size="40" maxlength="10" />
<input type="submit">
</cfform>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi agx,
One last question. Where exactly would I put this Javascript statement if I removed Preservedata?
Thanks again for you expertise!!
hefterr
One last question. Where exactly would I put this Javascript statement if I removed Preservedata?
Thanks again for you expertise!!
hefterr
I'd put it in a function (for clarity) then call it onLoad
ie
<body onLoad="yourFunction()">
ie
<body onLoad="yourFunction()">
Are you sure? I did a quick test and didn't any problem entering a non-date like "ABC" in the box.
<cfform method="post">
<cfinput name="toDate" type="datefield"
required="yes" size="40" maxlength="10" />
<input type="submit">
</cfform>