DekGenius.com
Previous Section  < Day Day Up >  Next Section

Recipe 5.5 Setting Up a Submit-Once-Only Button

Problem

You want to keep people from clicking the Submit button more than once.

Solution

First create a class for keeping the button from being displayed:

.buttonSubmitHide {
 display: none;
}

Then use the following JavaScript programmed to switch styles by class selectors:

<script language="JavaScript" type="text/javascript">
function classChange(styleChange,item) {
 item.className = styleChange;
}
</script>

Now trigger the function by using an onsubmit event to remove the Submit button from the web document:

<h2>Order Confirmation</h2>
<form action="login.php" method="post"
 onsubmit="classChange('buttonSubmitHide',submit); 
return true">
 <div align="center">
  <p>Are you sure you want to purchase 12 cans of soda over the 
Web?</p>
  <label for="uname">Final Price:</label>
  <input type="text" name="uname" id="uname" value="$7.95" />
<br />
   (includes tax, s+h extra)<br />
  <input type="submit" name="submit" value="submit" 
class="buttonSubmit" />
 </div>
</form>

Discussion

The JavaScript function in the Solution triggers a change in which a style is applied to the element. You must use the form's onsubmit event to execute the function so that the form's action will still be executed. If the function were triggered with an onclick event on the Submit button, some browsers would execute only the class-changing function. Then, because the button is no longer visible, the user would not be able to trigger the form.

See Also

JavaScript and DHTML Cookbook (O'Reilly) for more recipes that combine JavaScript and CSS.

    Previous Section  < Day Day Up >  Next Section