Form problem, load subsequent page w/o cgi on submit

So, I've got this form that I want to post via email, but I want to load a "success" page after the form has been submitted. The script & form below _should_ work, but the submit() function doesn't seem to function as specified. Interestingly enough, if I add a regular submit button and
add the line "document.surveyForm.Submit.click()" it works fine...but then I've got two submit buttons, err...kinda stupid. I need a solution that either enables me to load a success page after submission using a regular submit button, OR a method for submitting a form using a method included in an onClick handler. Help?
<CODE>
<FORM ACTION="mailto:arno@sirius.com?subject=Test Survey" METHOD="POST"
ENCTYPE="text/plain" NAME="surveyForm">

<SCRIPT LANGUAGE="JavaScript">
<!--hide script
        function sendIt(targetHREF)
        {       document.surveyForm.submit()
                self.location.href=targetHREF
        }
// -->
</SCRIPT>

What is your name?<BR>
<INPUT NAME="name" TYPE="Text" VALUE="" SIZE="32" MAXLENGTH="32"> <P>
<INPUT NAME="Submit Form" TYPE="Button" VALUE="Submit Form"
onClick="sendIt('success.html')">
</FORM>
</CODE>
arnohAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

arnohAuthor Commented:
It seems the submit() method was deactivated for security reasons. So, the only thing that's going to work is some sort of function that loads a success page after the form is submitted using a standard TYPE="submit" input.
0
Christian_WenzCommented:
arnoh is right. submit() works, but not if the form ACTION is mailto: !!
0
tecbuilderCommented:
This is what I use to get a success page to show up.  Enter it just before the </FORM> tag.
<INPUT TYPE="hidden" NAME="next-url" VALUE="next_page.html">
0
The Ultimate Tool Kit for Technolgy Solution Provi

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy for valuable how-to assets including sample agreements, checklists, flowcharts, and more!

arnohAuthor Commented:
I'm not sure I understand how a hidden input will load a page just by virtue of its presence?! Nonetheless I tried the solution suggested above...with no result. Is there an additional script that needs to be added to make the hidden input work?
0
tecbuilderCommented:
I did some digging and evidentally the Name="next_url" is a variable of some type for a CGI script.  I didn't realize this until you said that it didn't work.  Sorry.

The issue that the other comments made about the security issues for submitting an action of mailto, I believe are false.  According to Netscape's JS Guide you can use a mailto as an action.  However, the user will be notified that information is about to be sent via email.  They then have the choice of allowing or dis-allowing the email from being sent.

The problem of going to another page once the email has been sent I don't believe can be done without a CGI script for a single button.  The security just won't let you.
0
jshamlinCommented:
First, to echo what's been said - submit() won't work if the ACTION is mailto: - too many people were compiling SPAM-lists of everyone who visited the page (by submitting invisible mailto: forms) - but there is a way to make this work ...

Instead of <INPUT TYPE="button">, use <INPUT TYPE="submit"> - which is designed to submit the form withour recourse to JavaScript.  That will make sure the e-mail gets sent.

In that tag (the <INPUT TYPE="submit">) include an onClick event handler ..

onClick="this.location='newpage.html';"

This is the important bit: OMIT the HREF - document.location.href is a read-only parameter that returns the URL of the present document as a string that can be parsed for evaluation.  When you assign document.location.href a value, it takes on that new value  (strangely enough - should return an error, theoretically) as if it were any other string variable,- it does not serve to redirect the user to another page.  document.location = '[url]'; will do the trick.


0
arnohAuthor Commented:
Didn't fix it. The problem here seems to be that the onClick handler doesn't work on a submit type input...ergh. I've never had the problem with setting location.href, works fine for me in other code. Here's the really weird part. If I put an alert statement in the onClick handler, it executes the alert. It just won't execute a page load.
0
kollegovCommented:
Just use regular submit button
but set timeout to change document location later
from onSubmit handler.

<SCRIPT LANGUAGE="JavaScript">
<!--hide script
function sendIt(targetHREF)
{setTimeout("document.location=targetHREF",500);}
// -->
</SCRIPT>



<FORM ACTION="mailto:arno@sirius.com?subject=Test
Survey" METHOD="POST"
ENCTYPE="text/plain" NAME="surveyForm" onSubmit='sendIt("thanks.html")'>

What is your name?<BR>
<INPUT NAME="name" TYPE="Text" VALUE=""
SIZE="32" MAXLENGTH="32"> <P>
<INPUT NAME="Submit Form" TYPE="submit"
 VALUE="Submit Form"
</FORM>
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
arnohAuthor Commented:
Though it's still a kludge of sorts...I think it's the best JS is going to offer. Thanks to all for the help.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
JavaScript

From novice to tech pro — start learning today.