Anfrage-Formulare
Fertige Formulare für deine Branche (sonstige). Kopier den Embed-Code auf die Website — jede Anfrage landet automatisch im Posteingang.
Kontaktanfrage
Allgemeine Anfrage — passt für fast jeden Betrieb.
Felder
- Name · Text · Pflicht
- E-Mail · E-Mail · Pflicht
- Telefon · Telefon
- Worum geht es? · Auswahl
- Wann erreichen wir Sie am besten? · Text · Pflicht · ↳ nur wenn „Worum geht es?" = Rückruf gewünscht
- Ihr Anliegen · Textfeld · Pflicht
Gehostete Version (Link statt Embed, gleiches Formular): https://kaizen-os.k-aizen.de/formular/kontakt
Embed-Code (auf Website einfügen)
<form id="kaizen-kontakt">
<label data-kz="name">Name
<input type="text" name="name" required />
</label>
<label data-kz="email">E-Mail
<input type="email" name="email" required />
</label>
<label data-kz="phone">Telefon
<input type="tel" name="phone" />
</label>
<label data-kz="anliegen_art">Worum geht es?
<select name="anliegen_art">
<option value="">Bitte wählen…</option>
<option value="Allgemeine Frage">Allgemeine Frage</option>
<option value="Angebot anfragen">Angebot anfragen</option>
<option value="Rückruf gewünscht">Rückruf gewünscht</option>
</select>
</label>
<label data-kz="rueckruf_zeit">Wann erreichen wir Sie am besten?
<input type="text" name="rueckruf_zeit" required />
</label>
<label data-kz="message">Ihr Anliegen
<textarea name="message" required></textarea>
</label>
<input type="text" name="website" style="display:none" tabindex="-1" autocomplete="off" />
<button type="submit">Absenden</button>
</form>
<script>
(function () {
var form = document.getElementById("kaizen-kontakt");
var rules = [{"name":"rueckruf_zeit","field":"anliegen_art","equals":"Rückruf gewünscht","required":true}];
function val(name) {
var el = form.elements[name];
if (!el) return "";
if (el.type === "checkbox") return el.checked ? "ja" : "";
return (el.value || "").trim();
}
function ruleFor(name) {
for (var i = 0; i < rules.length; i++) if (rules[i].name === name) return rules[i];
return null;
}
function visible(name, seen) {
var r = ruleFor(name);
if (!r) return true;
seen = seen || {};
if (seen[name]) return true;
seen[name] = true;
var v = val(r.field);
var ok = r.oneOf ? r.oneOf.indexOf(v) !== -1 : v === r.equals;
return ok && visible(r.field, seen);
}
function apply() {
for (var i = 0; i < rules.length; i++) {
var r = rules[i];
var wrap = form.querySelector('[data-kz="' + r.name + '"]');
var el = form.elements[r.name];
if (!wrap || !el) continue;
var show = visible(r.name);
wrap.style.display = show ? "" : "none";
// Unsichtbares required würde den Browser-Submit blockieren.
if (el.required !== undefined) el.required = show && r.required;
}
}
form.addEventListener("change", apply);
form.addEventListener("input", apply);
apply();
form.addEventListener("submit", async function (e) {
e.preventDefault();
var known = ["name", "email", "phone", "message", "website"];
var extra = {};
var body = { formSlug: "kontakt", extra: extra };
new FormData(form).forEach(function (v, k) {
if (!visible(k)) return; // Werte versteckter Felder nie mitsenden
if (known.indexOf(k) !== -1) body[k] = v;
else extra[k] = v;
});
var r = await fetch("https://kaizen-os.k-aizen.de/api/forms/submit", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
});
form.innerHTML = r.ok ? "Danke! Wir melden uns." : "Etwas ging schief.";
});
})();
</script>