When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips

Sections:
Sample Chapters
Commonly Asked Message Board Questions
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
XML Info
Information:
Feedback
Author an Article
ASP ASP.NET ASP FAQs Message Board Feedback

The 4 Guys Present: ASPFAQs.com

Jump to a FAQ
Enter FAQ #:
..or see our 10 Most Viewed FAQs.

4GuysFromRolla.com : ASP FAQS : Forms


Question:

How can I dynamically change the action of a form?


[Print this FAQ]

Answer: This really isn't an ASP question (since you are using client-side JavaScript), but it's a commonly asked question so I figured it warranted an answer here. Say that we have a form with two buttons, and, depending on the button clicked, we'd like to programmatically set the form's action and submit it. Given the following HTML code for the form:

<FORM NAME="MyFirstForm">
  <INPUT TYPE=TEXT NAME=MyName><BR>
  <INPUT TYPE=BUTTON VALUE="Add" ONCLICK="Add();">
  <INPUT TYPE=BUTTON VALUE="Delete" ONCLICK="Delete();">
</FORM>

All we need to do to alter the form's action is write the Add() and Delete() client-side JavaScript functions:

<SCRIPT LANGUAGE="JavaScript">
<!--
  function Add()
  {
    // alter the action and submit the form
    document.MyFirstForm.action = "AddName.asp";
    document.MyFirstForm.submit();
  }

  function Delete()
  {
    // alter the action and submit the form
    document.MyFirstForm.action = "DeleteName.asp";
    document.MyFirstForm.submit();
  }
// -->
</SCRIPT>

Note that each JavaScript function is comprised of only two lines of code. The first dynamically alters the form's ACTION property and the second actually submits the form. Pretty neat, eh?

Another common request is how to change the form's action based upon a select box's value. To rig this up, all we need to do is wire the select box's ONCHANGE event to a JavaScript function that sets the action property of the form based upon the select box's current value. Given the following HTML code:

<FORM NAME=MyFirstForm ACTION="AddName.asp">
  <INPUT TYPE=TEXT NAME=MyName><BR>
  <SELECT NAME=MySelectBox ONCHANGE="AlterAction();">
    <OPTION SELECTED VALUE="AddName.asp">Add</OPTION>
    <OPTION VALUE="DeleteName.asp">Delete</OPTION>
  </SELECT>
  <P>
  <INPUT TYPE=SUBMIT>
</FORM>

Note that this is strikingly similar to the first code sample. The difference is that instead of using two buttons to determine the action, we are letting the user make a selection via a select box. The only thing left to do is write the client-side JavaScript AlterAction() function. (Note that the form's action is currently set to AddName.asp, which is the default select box option... this is in case the ONCHANGE event doesn't fire (i.e., the user doesn't change the select box values before submitting the form).)

<SCRIPT LANGUAGE="JavaScript">
<!--
  function AlterAction()
  {
    document.MyFirstForm.action =
        document.MyFirstForm.MySelectBox.value;
  }
// -->
</SCRIPT>

There you go! For more information on HTML tags, form elements, and client-side JavaScript coding, be sure to check out http://developer.netscape.com/!


FAQ posted by Scott Mitchell at 9/30/2000 8:55:10 PM to the Forms category. This FAQ has been viewed 92,236 times.

Do you have a FAQ you'd like to suggest? Suggestions? Comments? If so, send it in! Also, if you'd like to be a FAQ Admin (creating/editing FAQs), let me know! If you are looking for other FAQs, be sure to check out the 4Guys FAQ and Commonly Asked Messageboard Questions!

Most Viewed FAQs:

1.) How can I format numbers and date/times using ASP.NET? For example, I want to format a number as a currency. (761643 views)
2.) I am using Access and getting a 80004005 error (or a [Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)' error) when trying to open a connection! How can I fix this problem? (207777 views)
3.) How can I convert a Recordset into an array? Also, how can I convert an array into a Recordset? (202549 views)
4.) How can I quickly sort a VBScript array? (196039 views)
5.) How can I find out if a record already exists in a database? If it doesn't, I want to add it. (156019 views)
6.) How do I display data on a web page using arrays instead of Do...While...MoveNext...???... (152331 views)
7.) When I get a list of all files in a directory via the FileSystemObject, they aren't ordered in any reasonable way. How can I sort the files by name? Or by size? Or by date created? Or... (140381 views)
8.) For session variables to work, must the Web visitor have cookies enabled? (110162 views)
9.) Can I send emails without using CDONTS? (107083 views)
10.) How can I take the result of a SELECT...MULTIPLE or a group of same-named checkboxes and turn it into a query? That is, if the user selects 3 answers, how can I construct a query that looks for all 3? (106308 views)
Last computed at 9/17/2007 3:22:00 AM


ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article