From 85ffd419abe728bafa65c91124ab47343a0f889a Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Wed, 28 May 2025 16:56:03 +0100 Subject: [PATCH] Prevent duplicate QSO form submissions Prevent duplicate QSO form submissions - Add isSubmitting flag to track form submission state - Implement event listener on qso_input form to prevent multiple submissions - Block subsequent submit attempts while form is processing - Add comprehensive JSDoc documentation for the feature - Prevents duplicate QSO contacts from being created accidentally Fixes #3181 --- application/views/interface_assets/footer.php | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index 038dc04b..b3aa66eb 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -1323,7 +1323,7 @@ if ($this->session->userdata('user_id') != null) { }); } - + function sendMyMessage() { const message = document.getElementById('sendText').value; if (message.trim() === '') { @@ -1338,7 +1338,6 @@ if ($this->session->userdata('user_id') != null) { // Clear the input field document.getElementById('sendText').value = ''; } - optionslib->get_option('dxcache_url') != '') { ?> @@ -1834,6 +1833,28 @@ if ($this->session->userdata('user_id') != null) { // Event listeners $(document).ready(() => { + + /** + * Prevents multiple form submissions by tracking submission state + * + * This script prevents duplicate QSO (contact) submissions by: + * - Maintaining an isSubmitting flag to track form submission state + * - Adding an event listener to the 'qso_input' form + * - Preventing form submission if a submission is already in progress + * - Setting the flag to true when a valid submission begins + * + * @since Unknown + * @global boolean isSubmitting Flag to track if form is currently being submitted + */ + let isSubmitting = false; + document.getElementById('qso_input').addEventListener('submit', function(e) { + if (isSubmitting) { + e.preventDefault(); + return false; + } + isSubmitting = true; + }); + // Update frequency every three seconds for the selected radio setInterval(() => { const selectedRadioID = $('select.radios option:selected').val();