diff --git a/public/unterkunft-buchung.js b/public/unterkunft-buchung.js index a0e963e..282ffc8 100644 --- a/public/unterkunft-buchung.js +++ b/public/unterkunft-buchung.js @@ -221,6 +221,13 @@ fehlerAnzeigen({}, TXT.senden) }) }) + // Fehler verschwinden, sobald der Gast das Feld aendert; die allgemeine Meldung, wenn kein Feldfehler mehr steht + Object.keys(alle).forEach(function (k) { + felder[k].addEventListener('input', function () { + alle[k].fehler.hidden = true; alle[k].fehler.textContent = '' + if (!Object.keys(alle).some(function (n) { return !alle[n].fehler.hidden })) { meldung.textContent = ''; meldung.hidden = true } + }) + }) return h('section', { class: 'uk-karte' }, [h('h1', { text: 'Ihre Buchung bestätigen' }), p('Hallo ' + (g.name || '') + ', Ihre Anfrage wurde freigegeben. Bitte prüfen Sie die Angaben und buchen Sie verbindlich.'), form]) } diff --git a/test/unterkunftSeite.test.js b/test/unterkunftSeite.test.js index bafcddd..76b0c80 100644 --- a/test/unterkunftSeite.test.js +++ b/test/unterkunftSeite.test.js @@ -272,3 +272,20 @@ test('Uebersicht: Menge × Einzelpreis, gewaehlte Zahlart, Titel', async () => { assert.equal(fx.document.title, 'Buchung – Ferienwohnung') }) }) + +test('Fehler der Rechnungsadresse verschwinden, sobald der Gast die Felder ausfuellt (auch die allgemeine Meldung)', async () => { + await mitFx([{ status: 200, body: DATEN }], undefined, async (fx, el) => { + await fx.klick(fx.finde(el, 'button[type="submit"]')) + assert.match(fx.text(fx.finde(el, '[data-fehler="strasse"]')), /Straße/) + const meldung = fx.finde(el, '.uk-fehler') + assert.match(meldung.textContent, /Bitte prüfen Sie Ihre Angaben\./) + await fx.setze(fx.finde(el, '[name="strasse"]'), 'Hauptstr. 5') + assert.equal(fx.text(fx.finde(el, '[data-fehler="strasse"]')), '') + assert.match(fx.text(fx.finde(el, '[data-fehler="plz"]')), /PLZ/, 'andere Fehler bleiben, bis auch sie behoben sind') + assert.match(meldung.textContent, /Bitte prüfen/) + await fx.setze(fx.finde(el, '[name="plz"]'), '12345') + await fx.setze(fx.finde(el, '[name="ort"]'), 'Berlin') + assert.equal(meldung.textContent, '') + assert.ok(meldung.hidden) + }) +})