Submitting forms multiple times by accident is a common problem in web applications. In Oracle APEX, users may click a submit button multiple times due to network delays or slow page responses, which can lead to duplicate entries in your database, errors, or unintended side effects.
In this blog post, I will show you how to build a custom Dynamic Action plugin in Oracle APEX that prevents duplicate submissions and enhances user experience, using a simple and flexible JavaScript approach.
Why Duplicate Submissions Are a Problem
Duplicate submissions can cause:
-
Duplicate records in the database
-
Unexpected calculations or triggers firing multiple times
-
User frustration, if they see errors or multiple confirmation messages
-
Security concerns, especially in payment forms or critical operations
While Oracle APEX handles some validations on the server-side, client-side prevention improves both performance and UX.
Solution Overview
We will create a plugin that:
-
Disables the submit button after it is clicked
-
Submits the page using APEX’s
apex.submit()function -
Optionally re-enables the button after a configurable delay
-
Works with any button using its Static ID
The solution is lightweight, flexible, and integrates seamlessly with Dynamic Actions.
Step 1: JavaScript Function
Here’s the JavaScript function that powers our plugin:
How It Works
-
The function takes two parameters:
-
buttonId– the Static ID of the submit button -
disableSeconds– optional time in seconds to keep the button disabled
-
-
It prevents multiple clicks by disabling the button immediately after the first click
-
Uses APEX’s
apex.submit()to trigger a normal submission -
Optionally re-enables the button after the specified delay if the page hasn’t reloaded
Step 2: Create the Plugin Render Function
The plugin’s PL/SQL render function connects the Dynamic Action with the JavaScript:
Step 3: Using the Plugin in APEX
-
Upload your JS file (
restrict_duplicate_submit_js.js) to the plugin’s files -
Add a Dynamic Action to your submit button
-
Select the plugin as the Action
-
Set the Attributes:
-
Attribute 01 → Button Static ID (e.g., CHECK)
-
Attribute 02 → Disable time in seconds (e.g.,
2)
-
-
Save and test the page
Benefits of This Approach
-
Works with any button dynamically
-
Prevents duplicate submissions without affecting server-side logic
-
Lightweight and flexible for APEX applications
Conclusion
With this plugin, you can easily prevent users from submitting the same form multiple times, improving data integrity and user experience.
This is a small but powerful addition to any Oracle APEX application, especially for critical forms, financial transactions, or long-running processes.
Try it in your next project and see the difference!

Comments
Post a Comment