Eric Bourland
asked on
Why doesn't OnSubmit validation work for text fields on my record edit page?
I'm been puzzling over this for a while. Why doesn't OnSubmit validation work for text fields on my record edit page? For example:
Email Address: <cfinput type="text" name="UserEmail" value="#form.UserEmail#" validate="email" required="Yes" validateAt="onSubmit,onSer ver" message="Please enter a valid email address." size="35" tabindex="8" />
If I enter no value in the text field, then I see the error message in OnServer validation, which is less friendly and more forbidding than the friendly pop-up alert window of onSubmit validation.
When I view the source of the edit page, I see the ColdFusion-built script that creates the onSubmit alert window:
However, the onSubmit alert window does not appear. I've read the documentation and think I am doing things correctly:
http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0ffd8-7fea.html
What am I missing? Thank you as always.
Eric
Email Address: <cfinput type="text" name="UserEmail" value="#form.UserEmail#" validate="email" required="Yes" validateAt="onSubmit,onSer
If I enter no value in the text field, then I see the error message in OnServer validation, which is less friendly and more forbidding than the friendly pop-up alert window of onSubmit validation.
When I view the source of the edit page, I see the ColdFusion-built script that creates the onSubmit alert window:
<script type="text/javascript">/* <![CDATA[ */
if (window.ColdFusion) ColdFusion.required['firstname']=true;
/* ]]> */</script>
<script type="text/javascript">/* <![CDATA[ */
if (window.ColdFusion) ColdFusion.required['UserEmail']=true;
/* ]]> */</script>
<script type="text/javascript">
<!--
_CF_checkCFForm_1 = function(_CF_this)
{
//reset on submit
_CF_error_exists = false;
_CF_error_messages = new Array();
_CF_error_fields = new Object();
_CF_FirstErrorField = null;
//form element firstname required check
if( !_CF_hasValue(_CF_this['firstname'], "TEXT", false ) )
{
_CF_onError(_CF_this, "firstname", _CF_this['firstname'].value, "Please enter your first name.");
_CF_error_exists = true;
}
//form element UserEmail required check
if( !_CF_hasValue(_CF_this['UserEmail'], "TEXT", false ) )
{
_CF_onError(_CF_this, "UserEmail", _CF_this['UserEmail'].value, "Please enter a valid email address.");
_CF_error_exists = true;
}
//display error messages and return success
if( _CF_error_exists )
{
if( _CF_error_messages.length > 0 )
{
// show alert() message
_CF_onErrorAlert(_CF_error_messages);
// set focus to first form error, if the field supports js focus().
if( _CF_this[_CF_FirstErrorField].type == "text" )
{ _CF_this[_CF_FirstErrorField].focus(); }
}
return false;
}else {
return true;
}
}
//-->
</script>
However, the onSubmit alert window does not appear. I've read the documentation and think I am doing things correctly:
http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0ffd8-7fea.html
What am I missing? Thank you as always.
Eric
ASKER
>>>And remove that part form your input field:
<cfinput type="text" name="UserEmail" validate="email" required="Yes" validateAt="onSubmit,onSer ver" message="Please enter a valid email address." size="35" tabindex="8" />
Which part of the input field should I remove?
I will try the preservedata attribute ... thank you!
Eric
<cfinput type="text" name="UserEmail" validate="email" required="Yes" validateAt="onSubmit,onSer
Which part of the input field should I remove?
I will try the preservedata attribute ... thank you!
Eric
The part that should preserve the field value:
value="#form.UserEmail#"
In my test was that the error part that is obsolate when you use the cfform attribute.
>> Why doesn't OnSubmit validation work for text fields on my record edit page?
What you posted works fine. There must be something else going on.
<cfparam name="form.UserEmail" default="">
<cfform name="x" method="post">
<cfinput type="text" name="UserEmail" value="#form.UserEmail#" validate="email" required="Yes" validateAt="onSubmit,onSer ver" message="Please enter a valid email address." size="35" tabindex="8" />
<input type="submit">
</cfform>
What you posted works fine. There must be something else going on.
<cfparam name="form.UserEmail" default="">
<cfform name="x" method="post">
<cfinput type="text" name="UserEmail" value="#form.UserEmail#" validate="email" required="Yes" validateAt="onSubmit,onSer
<input type="submit">
</cfform>
ASKER
You're right, there is something else going on.
The form processes, and populates correctly the parent table CareplannersMembers and five relational tables. For an experiment, I took away the onServer validation:
validateAt="onSubmit"
Then I cleared the field for #UserEmail# -- I mean, I entered no email address in the cfinput text field -- and processed the form; the form gave me an error:
This means that, when I enter no email address in the Email address field, the form does not generate a value for #UserEmail#, even though I have set:
<cfparam name="form.UserEmail" default="">
I am looking for reasons why the form does not generate a value for #UserEmail#. Hmm.
The form processes, and populates correctly the parent table CareplannersMembers and five relational tables. For an experiment, I took away the onServer validation:
validateAt="onSubmit"
Then I cleared the field for #UserEmail# -- I mean, I entered no email address in the cfinput text field -- and processed the form; the form gave me an error:
Attribute validation error for CFMAIL.
The value of the FROM attribute is invalid. The length of the string, 0 character(s), must be greater than or equal to 1 character(s).
The error occurred in C:/websites/www.osm-vista.com/admin/userEdit.cfm: line 418
Called from C:/websites/www.osm-vista.com/admin/userEdit.cfm: line 253
Called from C:/websites/www.osm-vista.com/admin/userEdit.cfm: line 232
Called from C:/websites/www.osm-vista.com/admin/userEdit.cfm: line 226
Called from C:/websites/www.osm-vista.com/admin/userEdit.cfm: line 1
416 : <cfmail
417 : server="mail.careplanners.net"
418 : from="#form.UserEmail#"
419 : to="STServ@careplanners.net"
420 : subject=""
This means that, when I enter no email address in the Email address field, the form does not generate a value for #UserEmail#, even though I have set:
<cfparam name="form.UserEmail" default="">
I am looking for reasons why the form does not generate a value for #UserEmail#. Hmm.
>> the form does not generate a value for #UserEmail#
No, the error message says it does have a value, but it's an empty string which isn't a valid email address.
If only the onSubmit validation isn't working - you're looking for javascript errors. Use Firefox's error console or the Firebug plugin.
No, the error message says it does have a value, but it's an empty string which isn't a valid email address.
If only the onSubmit validation isn't working - you're looking for javascript errors. Use Firefox's error console or the Firebug plugin.
ASKER
That makes sense. I'm on it.
ASKER
Hmmm. Firebug reports all clear. And when I view page source, and copy that source into Dreamweaver CS 5, I get no reports of javascript errors. DW CS5 is usually pretty robust about reporting script errors.
I am trying a few other ideas. The form works perfectly otherwise, with the exception of the onSubmit. I'm gonna take a walk and think about it. I'll come back later.
Thank you again _agx_ and Zvonko.
Eric
I am trying a few other ideas. The form works perfectly otherwise, with the exception of the onSubmit. I'm gonna take a walk and think about it. I'll come back later.
Thank you again _agx_ and Zvonko.
Eric
>> with the exception of the onSubmit.
For just that one field or for all onSubmit validation?
For just that one field or for all onSubmit validation?
ASKER
All onSubmit validation on all fields does not work. Which is a clue I have been thinking about.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Ugh. Mapping to CFIDE. Of course. Hang on....
ASKER
Forgot to map to /CFIDE/ in new web site. I need to get more sleep....
Thank you _agx_ and Zvonko.
Thank you _agx_ and Zvonko.
Open in new window
And remove that part form your input field:Open in new window