78 lines
No EOL
3.1 KiB
HTML
78 lines
No EOL
3.1 KiB
HTML
<form method="post"
|
||
action="https://deinn8n.de/webhook/listmonk/subscribe"
|
||
class="listmonk-form d2s-newsletter-wide"
|
||
id="d2s-newsletter"
|
||
novalidate>
|
||
<div class="d2s-newsletter-wrap">
|
||
<h3 class="d2s-newsletter-title">🚀 Donau2Space Wochenschau</h3>
|
||
<p class="d2s-newsletter-desc">
|
||
Jeden Sonntag um 18 Uhr erscheint die Donau2Space-Wochenschau – keine Linkliste,
|
||
sondern eine kleine Geschichte über Fortschritte, Tests und Ideen der Woche.
|
||
Kurz, ehrlich und ganz ohne Werbung – direkt aus Passau. 🌍
|
||
</p>
|
||
|
||
<!-- Liste(n) für Listmonk / n8n → Array oder UUID -->
|
||
<input type="hidden" name="lists" value="listmonk-uuid" />
|
||
|
||
<!-- Anti-Spam -->
|
||
<input type="text" name="confirm_email" style="display:none!important" tabindex="-1" autocomplete="off" />
|
||
<input type="text" name="website" style="position:absolute;left:-9999px;" tabindex="-1" autocomplete="off" />
|
||
<input type="hidden" name="ts" value="" />
|
||
|
||
<div class="d2s-input-row">
|
||
<input type="email" name="email" required placeholder="E-Mail" class="d2s-input" autocomplete="email" />
|
||
<input type="text" name="name" placeholder="Name (optional)" class="d2s-input" autocomplete="name" />
|
||
</div>
|
||
|
||
<label class="d2s-checkbox" for="d2s-consent">
|
||
<input id="d2s-consent" type="checkbox" name="consent" value="true" required />
|
||
<span>Newsletter abonnieren & <a href="https://deinedomain.de/datenschutzerklaerung/" target="_blank">Datenschutz gelesen</a> (erforderlich)</span>
|
||
</label>
|
||
|
||
<button type="submit" class="d2s-btn" disabled>📩 Jetzt anmelden</button>
|
||
|
||
<!-- Archiv-Hinweis -->
|
||
<p class="d2s-newsletter-archive-note">
|
||
📡 Alle bisherigen Wochenrückblicke findest du im
|
||
<a href="https://donau2space.de/newsletter-archiv/">Newsletter-Archiv</a>.
|
||
</p>
|
||
</div>
|
||
</form>
|
||
|
||
<script>
|
||
(function () {
|
||
const form = document.getElementById('d2s-newsletter');
|
||
if (!form) return;
|
||
|
||
const btn = form.querySelector('button[type="submit"]');
|
||
const email = form.querySelector('input[name="email"]');
|
||
const consent = form.querySelector('#d2s-consent');
|
||
const ts = form.querySelector('input[name="ts"]');
|
||
|
||
// Set timestamp at render
|
||
ts.value = Math.floor(Date.now() / 1000);
|
||
|
||
// Enable button only when valid email + consent
|
||
const emailRe = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||
const toggle = () => {
|
||
const ok = emailRe.test((email.value || '').trim()) && consent.checked;
|
||
btn.disabled = !ok;
|
||
};
|
||
email.addEventListener('input', toggle);
|
||
consent.addEventListener('change', toggle);
|
||
toggle();
|
||
|
||
// Optional client-side speed check (UX)
|
||
form.addEventListener('submit', function (e) {
|
||
const started = parseInt(ts.value || '0', 10);
|
||
if (!started || (Date.now() / 1000) - started < 3) {
|
||
e.preventDefault();
|
||
alert('Bitte 2–3 Sekunden warten und erneut versuchen.');
|
||
return false;
|
||
}
|
||
// Prevent double submits
|
||
btn.disabled = true;
|
||
btn.textContent = '⏳ Wird gesendet…';
|
||
});
|
||
})();
|
||
</script> |