Skip to content

Commit 4f0f4bb

Browse files
authored
Merge pull request #1996 from RaspAP/fix/dhcp-required-fields
Fix: Add required validation for DHCP fields when enabled
2 parents 5b8ecff + 821aaf6 commit 4f0f4bb

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

app/js/ui/main.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,36 @@ function setDhcpFieldsDisabled() {
457457
$('#txtmetric').prop('disabled', true);
458458
}
459459

460+
document.addEventListener('DOMContentLoaded', function() {
461+
const dhcpCheckbox = document.getElementById('dhcp-iface');
462+
const rangeStart = document.getElementById('txtrangestart');
463+
const rangeEnd = document.getElementById('txtrangeend');
464+
const leaseTime = document.getElementById('txtrangeleasetime');
465+
466+
function updateRequiredFields() {
467+
const isChecked = dhcpCheckbox.checked === true;
468+
469+
if (isChecked) {
470+
rangeStart.setAttribute('required', 'required');
471+
rangeEnd.setAttribute('required', 'required');
472+
leaseTime.setAttribute('required', 'required');
473+
} else {
474+
rangeStart.removeAttribute('required');
475+
rangeEnd.removeAttribute('required');
476+
leaseTime.removeAttribute('required');
477+
478+
rangeStart.classList.remove('is-invalid', 'is-valid');
479+
rangeEnd.classList.remove('is-invalid', 'is-valid');
480+
leaseTime.classList.remove('is-invalid', 'is-valid');
481+
}
482+
}
483+
484+
// set initial state
485+
updateRequiredFields();
486+
setTimeout(updateRequiredFields, 100);
487+
dhcpCheckbox.addEventListener('change', updateRequiredFields);
488+
});
489+
460490
// Static Array method
461491
Array.range = (start, end) => Array.from({length: (end - start)}, (v, k) => k + start);
462492

templates/dhcp/general.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,34 +107,32 @@
107107

108108
<div class="row">
109109
<div class="mb-3 col-md-6">
110-
<label for="code"><?php echo _("Starting IP Address"); ?></label>
110+
<label for="txtrangestart"><?php echo _("Starting IP Address"); ?></label>
111111
<input type="text" class="form-control ip_address" id="txtrangestart" name="RangeStart" maxlength="15" />
112112
<div class="invalid-feedback">
113113
<?php echo _("Please provide a valid Starting IP Address."); ?>
114114
</div>
115115
</div>
116116
</div>
117-
118117
<div class="row">
119118
<div class="mb-3 col-md-6">
120-
<label for="code"><?php echo _("Ending IP Address"); ?></label>
119+
<label for="txtrangeend"><?php echo _("Ending IP Address"); ?></label>
121120
<input type="text" class="form-control ip_address" id="txtrangeend" name="RangeEnd" maxlength="15" />
122121
<div class="invalid-feedback">
123122
<?php echo _("Please provide a valid Ending IP Address."); ?>
124123
</div>
125124
</div>
126125
</div>
127-
128126
<div class="row">
129127
<div class="mb-3 col-xs-3 col-sm-3">
130-
<label for="code"><?php echo _("Lease Time"); ?></label>
128+
<label for="txtrangeleasetime"><?php echo _("Lease Time"); ?></label>
131129
<input type="text" class="form-control" id="txtrangeleasetime" name="RangeLeaseTime" />
132130
<div class="invalid-feedback">
133131
<?php echo _("Please provide a valid Lease Time."); ?>
134132
</div>
135133
</div>
136134
<div class="col-xs-3 col-sm-3">
137-
<label for="code"><?php echo _("Interval"); ?></label>
135+
<label for="cbxrangeleasetimeunits"><?php echo _("Interval"); ?></label>
138136
<select id="cbxrangeleasetimeunits" name="RangeLeaseTimeUnits" class="form-select" >
139137
<option value="m"><?php echo _("Minute(s)"); ?></option>
140138
<option value="h"><?php echo _("Hour(s)"); ?></option>

0 commit comments

Comments
 (0)