forked from fa/breadcrumb-the-shire
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:
@@ -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>
|
||||
<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>
|
||||
</select>
|
||||
</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'] ?? ''); ?>">
|
||||
<div id="wizard-domain-feedback" class="app-wizard-field-feedback" role="alert" hidden></div>
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ export function initHandoverDomainSelect(root = document) {
|
||||
const scope = group.closest('form') || document;
|
||||
const lookupContainer = scope.querySelector('[data-app-lookup]');
|
||||
const domainSelect = group.querySelector('#wizard-domain');
|
||||
const domainNoInput = group.querySelector('#wizard-domain-no');
|
||||
const domainUrlInput = group.querySelector('#wizard-domain-url');
|
||||
const feedback = group.querySelector('#wizard-domain-feedback');
|
||||
const manualBlock = group.querySelector('#wizard-domain-manual');
|
||||
@@ -83,8 +84,9 @@ export function initHandoverDomainSelect(root = document) {
|
||||
manualUrlInput.value = '';
|
||||
}
|
||||
// When showing manual, clear the hidden domain_no/url so only manual values submit
|
||||
if (show && domainUrlInput) {
|
||||
domainUrlInput.value = '';
|
||||
if (show) {
|
||||
if (domainNoInput) domainNoInput.value = '';
|
||||
if (domainUrlInput) domainUrlInput.value = '';
|
||||
}
|
||||
};
|
||||
|
||||
@@ -92,9 +94,8 @@ export function initHandoverDomainSelect(root = document) {
|
||||
clearOptions();
|
||||
addPlaceholder(textInitial);
|
||||
domainSelect.disabled = true;
|
||||
if (domainUrlInput) {
|
||||
domainUrlInput.value = '';
|
||||
}
|
||||
if (domainNoInput) domainNoInput.value = '';
|
||||
if (domainUrlInput) domainUrlInput.value = '';
|
||||
setFeedback('', '');
|
||||
showManual(false);
|
||||
};
|
||||
@@ -145,18 +146,14 @@ export function initHandoverDomainSelect(root = document) {
|
||||
|
||||
on(domainSelect, 'change', () => {
|
||||
const selected = domainSelect.options[domainSelect.selectedIndex];
|
||||
if (domainUrlInput) {
|
||||
domainUrlInput.value = selected?.dataset.url || '';
|
||||
}
|
||||
if (domainNoInput) domainNoInput.value = selected?.value || '';
|
||||
if (domainUrlInput) domainUrlInput.value = selected?.dataset.url || '';
|
||||
});
|
||||
|
||||
// Sync manual inputs → hidden domain_no / domain_url fields
|
||||
if (manualNoInput) {
|
||||
on(manualNoInput, 'input', () => {
|
||||
const hiddenNo = scope.querySelector('input[name="domain_no"]');
|
||||
if (hiddenNo) {
|
||||
hiddenNo.value = manualNoInput.value.trim();
|
||||
}
|
||||
if (domainNoInput) domainNoInput.value = manualNoInput.value.trim();
|
||||
});
|
||||
}
|
||||
if (manualUrlInput) {
|
||||
@@ -189,6 +186,9 @@ export function initHandoverDomainSelect(root = document) {
|
||||
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 {
|
||||
|
||||
Reference in New Issue
Block a user