1
0

fix(helpdesk): fix manual domain value not submitted — use hidden input for domain_no

Select had name="domain_no" but JS was looking for input[name="domain_no"].
Moved name to a hidden input #wizard-domain-no; select syncs into it on
change; manual text input syncs into it on input event.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
aminovfariz
2026-06-08 10:22:19 +02:00
parent 57cb2f1017
commit e569e2d26c
2 changed files with 14 additions and 13 deletions

View File

@@ -150,10 +150,11 @@ if ($canManage && $mode === 'assign' && $step === 2) {
> >
<label for="wizard-domain"><?php e(t('Domain')); ?> <span class="handover-form-required">*</span></label> <label for="wizard-domain"><?php e(t('Domain')); ?> <span class="handover-form-required">*</span></label>
<div class="app-wizard-domain-select-wrap"> <div class="app-wizard-domain-select-wrap">
<select id="wizard-domain" name="domain_no" disabled> <select id="wizard-domain" disabled>
<option value=""><?php e(t('Select a customer first...')); ?></option> <option value=""><?php e(t('Select a customer first...')); ?></option>
</select> </select>
</div> </div>
<input type="hidden" name="domain_no" id="wizard-domain-no" value="<?php e($form['domain_no'] ?? ''); ?>">
<input type="hidden" name="domain_url" id="wizard-domain-url" value="<?php e($form['domain_url'] ?? ''); ?>"> <input type="hidden" name="domain_url" id="wizard-domain-url" value="<?php e($form['domain_url'] ?? ''); ?>">
<div id="wizard-domain-feedback" class="app-wizard-field-feedback" role="alert" hidden></div> <div id="wizard-domain-feedback" class="app-wizard-field-feedback" role="alert" hidden></div>

View File

@@ -23,6 +23,7 @@ export function initHandoverDomainSelect(root = document) {
const scope = group.closest('form') || document; const scope = group.closest('form') || document;
const lookupContainer = scope.querySelector('[data-app-lookup]'); const lookupContainer = scope.querySelector('[data-app-lookup]');
const domainSelect = group.querySelector('#wizard-domain'); const domainSelect = group.querySelector('#wizard-domain');
const domainNoInput = group.querySelector('#wizard-domain-no');
const domainUrlInput = group.querySelector('#wizard-domain-url'); const domainUrlInput = group.querySelector('#wizard-domain-url');
const feedback = group.querySelector('#wizard-domain-feedback'); const feedback = group.querySelector('#wizard-domain-feedback');
const manualBlock = group.querySelector('#wizard-domain-manual'); const manualBlock = group.querySelector('#wizard-domain-manual');
@@ -83,8 +84,9 @@ export function initHandoverDomainSelect(root = document) {
manualUrlInput.value = ''; manualUrlInput.value = '';
} }
// When showing manual, clear the hidden domain_no/url so only manual values submit // When showing manual, clear the hidden domain_no/url so only manual values submit
if (show && domainUrlInput) { if (show) {
domainUrlInput.value = ''; if (domainNoInput) domainNoInput.value = '';
if (domainUrlInput) domainUrlInput.value = '';
} }
}; };
@@ -92,9 +94,8 @@ export function initHandoverDomainSelect(root = document) {
clearOptions(); clearOptions();
addPlaceholder(textInitial); addPlaceholder(textInitial);
domainSelect.disabled = true; domainSelect.disabled = true;
if (domainUrlInput) { if (domainNoInput) domainNoInput.value = '';
domainUrlInput.value = ''; if (domainUrlInput) domainUrlInput.value = '';
}
setFeedback('', ''); setFeedback('', '');
showManual(false); showManual(false);
}; };
@@ -145,18 +146,14 @@ export function initHandoverDomainSelect(root = document) {
on(domainSelect, 'change', () => { on(domainSelect, 'change', () => {
const selected = domainSelect.options[domainSelect.selectedIndex]; const selected = domainSelect.options[domainSelect.selectedIndex];
if (domainUrlInput) { if (domainNoInput) domainNoInput.value = selected?.value || '';
domainUrlInput.value = selected?.dataset.url || ''; if (domainUrlInput) domainUrlInput.value = selected?.dataset.url || '';
}
}); });
// Sync manual inputs → hidden domain_no / domain_url fields // Sync manual inputs → hidden domain_no / domain_url fields
if (manualNoInput) { if (manualNoInput) {
on(manualNoInput, 'input', () => { on(manualNoInput, 'input', () => {
const hiddenNo = scope.querySelector('input[name="domain_no"]'); if (domainNoInput) domainNoInput.value = manualNoInput.value.trim();
if (hiddenNo) {
hiddenNo.value = manualNoInput.value.trim();
}
}); });
} }
if (manualUrlInput) { if (manualUrlInput) {
@@ -189,6 +186,9 @@ export function initHandoverDomainSelect(root = document) {
domainSelect.dispatchEvent(new Event('change')); domainSelect.dispatchEvent(new Event('change'));
} }
}); });
} else if (domainNoInput && domainNoInput.value) {
// Restore hidden value on page reload with validation errors (manual mode)
if (manualNoInput) manualNoInput.value = domainNoInput.value;
} }
return { return {