Often, you’ll want to prevent impatient users from clicking a submit button multiple times, as you can end up with multiple actions taking place, or object state can get in a bad way leading to errors. For this example we’ll assume you have a final Submit Order form that actually places the order, auth’s the credit card, etc…
You can’t simply disable the submit button onclick with ATG as typically the submit button is the input field that actually activates the handle method. I tried a bunch of things, before I was able to get something working, so I wanted to share that here.
First thing is to write some javascript that will handle all of the magic (this example uses jQuery):
<script language=”JavaScript”>function submitform(){$(‘#commitOrderButton’).attr(“href”,”#”);document.myFormsName.submit();}</script>
Second, you need to move the input that calls the correct handle method out of the submit button and into a hidden form field:
<dsp:input bean=”CommitOrderFormHandler.commitOrder” value=”submit” type=”hidden”>
</dsp:input>
Thirdly you’ll want to replace the submit input with a submit <a> which will call your javascript:
<a href="javascript:submitform()" id="commitOrderButton"> <img src="/myapp/img/button/submitOrder.gif" alt="Submit Order" border="0" class="submitOrder" /> </a>
And that’s it.
Leave a Reply