Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

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

Posted on 1997-11-18
9
265 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
ID: 1274281
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
ID: 1274282
arnoh is right. submit() works, but not if the form ACTION is mailto: !!
0
 
LVL 6

Expert Comment

by:tecbuilder
ID: 1274283
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
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Author Comment

by:arnoh
ID: 1274284
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
 
LVL 6

Expert Comment

by:tecbuilder
ID: 1274285
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
ID: 1274286
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
ID: 1274287
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
ID: 1274288
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
ID: 1274289
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 Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In this article, we'll look how to sort an Array in JavaScript, including the more advanced techniques of sorting a collection of records either ascending or descending on two or more fields. Basic Sorting of Arrays First, let's look at the …
Boost your ability to deliver ambitious and competitive web apps by choosing the right JavaScript framework to best suit your project’s needs.
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…

792 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