diff --git a/public/auftrag-widerruf.js b/public/auftrag-widerruf.js index 082c1ab..1b3d32a 100644 --- a/public/auftrag-widerruf.js +++ b/public/auftrag-widerruf.js @@ -2,7 +2,7 @@ Rechtsfunktion: dieses Modul darf die anderen Vertragsarten nie stören. Fällt es aus, funktioniert der Widerruf wie bisher. Das Feld ist nur bei „Projektauftrag“ sichtbar; eine eingegebene, aber unpassende Nummer wird gemeldet und stoppt das Absenden, ein leeres Feld lässt den Widerruf durch (der Widerruf bleibt formfrei). Die Meldung steht in auftrag-ansicht.js. */ -import { abNummerNormalisiert, texte } from './auftrag-ansicht.js' +import { ANREDE_DU, abNummerNormalisiert, texte } from './auftrag-ansicht.js' export function initProjektWiderruf(form) { const wrap = form?.querySelector('#ab-nummer-wrap') @@ -39,7 +39,10 @@ export function initProjektWiderruf(form) { const nummer = abNummerNormalisiert(eingabe) if (!nummer) { ev.preventDefault() - fehler.textContent = texte().abNummerUngueltig + // Neue Seite (data-anrede="du"): die Meldung in du; ohne das Attribut bleibt der Satz aus auftrag-ansicht.js + fehler.textContent = form.getAttribute('data-anrede') === ANREDE_DU + ? 'Die Nummer sieht anders aus als AB-2026-0001. Bitte prüfe die Nummer oder lass das Feld leer.' + : texte().abNummerUngueltig fehler.classList.remove('hidden') eigeneMeldung = true feld.focus() diff --git a/public/legal-form.js b/public/legal-form.js index e272a49..f78a0fa 100644 --- a/public/legal-form.js +++ b/public/legal-form.js @@ -3,6 +3,13 @@ // Der Kunde waehlt den Vertrag (Kuendigung: Abo oder nur der Zusatzspeicher, ganz oder mit Paketzahl) bzw. die // Bestellung (Widerruf: Abschluss, Wechsel, Zusatzspeicher); die Auswahl geht in den Request und steht in der // Bestaetigung. Nach dem Absenden: Bestaetigung mit Datum/Uhrzeit, speicher- und druckbar. +/** Paketzahl der Kündigung des Zusatzspeichers prüfen (nur die neue Seite mit data-anrede="du"): leer oder ganze Zahl von 1 bis max → '', sonst der du-Satz. */ +function legalFormPaketeFehler(wert, max) { + const text = String(wert ?? '').trim() + if (text === '') return '' + return /^\d+$/.test(text) && Number(text) >= 1 && Number(text) <= max ? '' : `Bitte gib 1 bis ${max} Pakete an oder lass das Feld leer (alle Pakete).` +} + function initLegalForm({ endpoint, fields }) { const form = document.getElementById('decl-form') const done = document.getElementById('done') @@ -51,6 +58,15 @@ function initLegalForm({ endpoint, fields }) { for (const f of fields) payload[f] = String(form.elements[f]?.value ?? '').trim() if (form.elements.when?.value === 'datum' && !storageOnly()) payload.effective = dateInput?.value || '' if (form.elements.contract && !storageOnly()) delete payload.packages + // Neue Seite (data-anrede="du"): die Paketzahl wird hier geprüft, der Sie-Satz des Servers erreicht sie nicht + if (form.getAttribute('data-anrede') === 'du' && storageOnly()) { + const paketeFehler = legalFormPaketeFehler(payload.packages, Number(form.elements.packages?.max) || 10) + if (paketeFehler) { + errEl.textContent = paketeFehler + errEl.classList.remove('hidden') + return + } + } const btn = form.querySelector('button[type="submit"]') btn.disabled = true try { diff --git a/public/neu/oeffentlich/kuendigen.html b/public/neu/oeffentlich/kuendigen.html index 1e812d5..43b2c51 100644 --- a/public/neu/oeffentlich/kuendigen.html +++ b/public/neu/oeffentlich/kuendigen.html @@ -15,7 +15,7 @@