Solved

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

Posted on 1997-11-18
9
251 Views
Last Modified: 2012-05-04
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>
0
Comment
Question by:arnoh
9 Comments
 

Author Comment

by:arnoh
Comment Utility
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
 
LVL 5

Expert Comment

by:Christian_Wenz
Comment Utility
arnoh is right. submit() works, but not if the form ACTION is mailto: !!
0
 
LVL 6

Expert Comment

by:tecbuilder
Comment Utility
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
 

Author Comment

by:arnoh
Comment Utility
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
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 6

Expert Comment

by:tecbuilder
Comment Utility
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
 
LVL 4

Expert Comment

by:jshamlin
Comment Utility
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
 

Author Comment

by:arnoh
Comment Utility
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
 
LVL 10

Accepted Solution

by:
kollegov earned 100 total points
Comment Utility
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
 

Author Comment

by:arnoh
Comment Utility
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

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

In my daily work (mainly using ASP.net), I need to write a lot of JavaScript code. One of the most repetitive tasks I do are the jQuery Ajax calls. You know: (CODE) I don't know if for you it's the same, but for me is soooo tedious to write the …
The task A number given should be formatted for easy reading by separating digits into triads. Format must be made inline via JavaScript, i.e., frameworks / functions are not welcome. So let’s take a number like this “12345678.91¿ and format i…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now