From 821aaf646cd4df78fa7fbcc3b724486e2205b78a Mon Sep 17 00:00:00 2001 From: billz Date: Tue, 11 Nov 2025 13:29:22 +0100 Subject: [PATCH] Add required validation for DHCP fields when enabled --- app/js/ui/main.js | 30 ++++++++++++++++++++++++++++++ templates/dhcp/general.php | 10 ++++------ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/app/js/ui/main.js b/app/js/ui/main.js index 35ea3153..75aa2777 100644 --- a/app/js/ui/main.js +++ b/app/js/ui/main.js @@ -457,6 +457,36 @@ function setDhcpFieldsDisabled() { $('#txtmetric').prop('disabled', true); } +document.addEventListener('DOMContentLoaded', function() { + const dhcpCheckbox = document.getElementById('dhcp-iface'); + const rangeStart = document.getElementById('txtrangestart'); + const rangeEnd = document.getElementById('txtrangeend'); + const leaseTime = document.getElementById('txtrangeleasetime'); + + function updateRequiredFields() { + const isChecked = dhcpCheckbox.checked === true; + + if (isChecked) { + rangeStart.setAttribute('required', 'required'); + rangeEnd.setAttribute('required', 'required'); + leaseTime.setAttribute('required', 'required'); + } else { + rangeStart.removeAttribute('required'); + rangeEnd.removeAttribute('required'); + leaseTime.removeAttribute('required'); + + rangeStart.classList.remove('is-invalid', 'is-valid'); + rangeEnd.classList.remove('is-invalid', 'is-valid'); + leaseTime.classList.remove('is-invalid', 'is-valid'); + } + } + + // set initial state + updateRequiredFields(); + setTimeout(updateRequiredFields, 100); + dhcpCheckbox.addEventListener('change', updateRequiredFields); +}); + // Static Array method Array.range = (start, end) => Array.from({length: (end - start)}, (v, k) => k + start); diff --git a/templates/dhcp/general.php b/templates/dhcp/general.php index 6c4ce67c..670fce2e 100644 --- a/templates/dhcp/general.php +++ b/templates/dhcp/general.php @@ -107,34 +107,32 @@
- +
-
- +
-
- +
- +