[Javascript] Loop problem with dynamic javascript using ASP
Alexandre Zglav
azglav at heritage.ch
Wed Mar 19 05:13:04 CST 2003
Thanks again David,
Well i think you guessed wrong for the onSubmit as it is present in the
declration of my form since the beginning.
I am going to try to explain what I am trying to do more precisely and
give you all more code snippets so that you can really understand.
First, all my pages are generated dynamically by ASP ( server side
VBscript) pages and what I am trying to do here is to combine javascript
with ASP to generate javascript dynamically. I know its possible and I can
be pigheaded when it comes to try new things for my web site. I suggest
you visit this site http://www.15seconds.com/issue/000210.htm before you
go furher so that i am sure that you fully understand what I am trying to
do.
The process of my test page is as follow :
First form generation
A user gets on page jsForm.asp. This page appears differently wether the
server finds out that the visitor has submited any form yet or not. If no
form has been submited a Form is genarated. It contains only one select
box with numbers from 1 to 5 and a submit button. This fist form is
submited to jsForm.asp itself and is not checked by javascript.
Seccond form generation
Now once the first form is submited, test1.asp is going to retrieve the
value of the select box and react differently than before by generating
another form with a variable number of text fields. This number of text
field is defined by the number chosen in the select box earlier so if 2
was selected, there is going to be 2 text fields.
Now an important part I think, is that on their generation, the text
fields are given different names : name1 , name2 etc ....
This client side validation script ( javascript ) is generated with this
seccond form.
Finaly on, on the seccond form ( the one that is checked by javascript )
one submit button is generated. In the form definition there is an
onSubmit method that sends the content of the form to the CheckForm
function that you know.
Javascript validation
As you already know the javascript is here to perform a final validation
of the form before it is submitted to another asp page before database
insertion. I am using a loop to go through all the text fields ( name1,
name2 etc ... ) to check if they have been filled. The value of Numfrm is
a dynamic value that corresponds to the number of textfields. My loop will
loop ( as its name suggests) through all the texfields generated and check
that it has been filled and I am pretty sure that the problem is here ...
but I just cant put my hands on it.
I think the problem comes from the part document.form1.name[i].value. In
fact i think that the name[i] will output something like name[1], name[2]
etc ... and i'd need it to output name1, name2, name3 etc ....
So finaly I will give you 2 txt documents. One is the original asp script
with comments and the javascript, the seccond is the output of this asp
script into a browser ( it contains only HTML and Javascript) so that you
can see where the problem is.
I hope that I have made my self clear enough for you all to understand
everything .
Anyway thanks a lot for your precious help.
_____________________________________
IT Projects
Alexandre Zglav
Heritage Finance and Trust Company
12 cours des bastions
1205 Geneva
Switzerland
Phone : ++ 41 22 817 31 68
----------------------------------------------------------------
This document should only be read by those persons to whom it is
addressed and is not intended to be relied upon by any person
without subsequent written confirmation of its contents. If you
have received this e-mail message in error, please destroy it
and delete it from your computer.
Any form of reproduction, dissemination, copying, disclosure,
modification, distribution and/or publication of this E-mail
message is strictly prohibited.
----------------------------------------------------------------
"David T. Lovering" <dlovering at gazos.com>
Sent by: javascript-admin at LaTech.edu
18.03.2003 19:20
Please respond to javascript
To: javascript at LaTech.edu
cc:
Subject: Re: [Javascript] Loop problem
Ah ha! I smell an 'onSubmit' problem:
You need to modify your original form declaration to include an
'onSubmit' equivalence which points
to your checking routine (which can be substantially shortened, BTW), i.e;
<form name='myForm' action='javascript:void(null)'
onSubmit='checkForm(document.myForm)'>
If you combine all the helpful hints together, checkForm can be reduced
to
<script language='JavaScript'>
<!--
var form1;
function checkForm(form1) {
if (!form) { return false; }
if (form == '') { return false; } //
throat-scratch protection against bogus form
if (!document.forms[form1].elements) { return false; }// cure for
empty form syndrome
var Numfrm = document.forms[form1].elements.length; // notice
that since 'form1' is a var I don't use ""
for (var i=0; i<Numfrm; i++) {
if (document.forms[form1].element[i].length == 0) { return false;
}
}
return true;
}
// -->
</script>
Notice how 'checkName' got squished into one line of code. Rule of
thumb: if you are doing something
which takes fewer lines of code to do directly than will be required for
a function declaration, don't use a
function. This keeps down the burden on the heap assignments, and
decreases the likelihood of a heap-stack
collision -- easily the most common cause of the "blue-screen-of-death"
(BSOD). Sometimes I violate this
rule if a gazillion descending field elements are nested together in the
variable name, but I feel guilty
about it afterwards.
Also, the 'action' declaration I picked can be substituted out for
anything of your choosing -- you'll
probably want to point it to your friendly neighborhood CGI/BIN server
which handles your other forms
submissions. However, the onSubmit kicks in BEFORE the action gets
invoked, and if checkForm returns a
false, the action is disabled and the form contents don't go anywhere
(in theory). Sometimes, a broken
FrontPage build of the form will send it on anyway, thereby crashing the
forms server and endearing you
(and Microsoft) to thousands of freshly outraged customers. [Hence the
reason I don't use FrontPage].
Again, I caution you -- if you have ANYTHING in your form which is an
element, but not a vanilla text
input, this simple script won't cut it anymore, and you'll have to put
some more hair on its chest.
-- Dave Lovering
Alexandre Zglav wrote:
>
> Ok thanks a lot for the tips.
>
> I have applied a few changes to my code accordingly to your last email
and
> the script doesn't jam anymore. I still have a problem thought : the
> tests seem to be completely bypassed. If i try my form and leave it
blank,
> the form is submitted and there is no alert ....
>
> Oh and by the way you guessed right : i am trying to test variable
amount
> of text fields passing them into CheckName
>
> Here is the code I am using now :
>
>
>
> Probably that the return true is missplaced ( its in commentary right
now
> as I'm not sure on where to place it )
>
> Thanks again for your help.
>
>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Name: New Text Document.txt
> New Text Document.txt Type: Plain Text (text/plain)
> Encoding: base64
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dlovering.vcf
Type: application/octet-stream
Size: 318 bytes
Desc: not available
URL: <http://lists.evolt.org/pipermail/javascript/attachments/20030319/d46e54f4/attachment.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.evolt.org/pipermail/javascript/attachments/20030319/d46e54f4/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jsForm.asp
Type: application/octet-stream
Size: 2505 bytes
Desc: not available
URL: <http://lists.evolt.org/pipermail/javascript/attachments/20030319/d46e54f4/attachment-0001.obj>
More information about the Javascript
mailing list