Mehrstufiges Nuxt-Formular
Baue ein mehrstufiges Formular in Nuxt ganz ohne Server-Route. Sammle die Felder über mehrere Schritte in einem reaktiven Objekt (oder einem Pinia-Store, falls der Wizard sich über mehrere Routen erstreckt), und sende erst am Ende einmal an Formpaste. Kopiere die Wizard-Komponente und ergänze deinen Zugangsschlüssel.
So baust du es
- Erstelle ein Formular in deinem Formpaste-Dashboard und kopiere den Zugangsschlüssel.
- Kopiere die untenstehende mehrstufige Komponente in eine Nuxt-Seite oder -Komponente.
- Ersetze YOUR_ACCESS_KEY_HERE durch deinen Zugangsschlüssel, dann deploye.
Prompt für deinen KI-Coding-Agenten
Add a Formpaste multi-step form to my Nuxt 3 app. Use a Vue component with <script setup> that collects name, email and message across several steps in a reactive object with Next and Back buttons, then POSTs once at the end as application/x-www-form-urlencoded (URLSearchParams) to https://api.formpaste.com/submit with a hidden access_key. Do not post on every step and do not add a server route. Use Pinia only if the wizard spans routes.Oder verbinde den Formpaste-MCP-Server mit Claude Code, Codex, Cursor, Claude Desktop, VS Code oder einem beliebigen mcp-remote-Client. Zur Einrichtungsanleitung.
Nuxt-Fallstricke
Nuxt gibt dir Server-Routen, aber für ein Formular brauchst du keine. Ein Formpaste-Formular ist eine Vue-Komponente, die direkt an Formpaste postet, also gibt es keinen server/api-Handler und keine Nitro-Route zu schreiben. Es funktioniert mit SSR oder einem statischen nuxi generate-Build.
Keine Server-Route nötig
Du brauchst keinen server/api/-Endpunkt und keinen Nitro-Handler. Die Komponente postet direkt an den Formpaste-Endpunkt, wodurch die App überall deploybar bleibt, auch als vollständig statischer nuxi generate-Build.
Es ist eine Vue-Komponente
Nuxt ist Vue, das Formular ist also eine Single-File-Komponente mit v-model und einem @submit.prevent-Handler. Nutze den Vue-Code aus dem Umschalter oben - er funktioniert innerhalb von Nuxt genauso.
Pinia nur, wenn du geteilten State willst
Bei einem mehrstufigen Formular kannst du den Schritt-Status in einem Pinia-Store halten, falls er sich über mehrere Routen erstreckt, aber lokaler Komponenten-State ist für einen einseitigen Assistenten einfacher. So oder so postet der letzte Schritt einmal an Formpaste.
SSR oder statisch, dasselbe Formular
Weil das Formular an einen externen Endpunkt postet, funktioniert es unabhängig davon, ob du mit SSR oder als statische Seite deployst. Zum Zeitpunkt der Einsendung läuft kein eigener Server-Code.
Worauf es ankommt
Ein Formular, mehrere Bildschirme
Ein mehrstufiges Formular ist eine einzige Einsendung, die in der UI auf mehrere Schritte verteilt ist. Sammle alle Felder im Client-State und poste am Ende einmal.
Eine eigene Route pro Schritt ist optional
Du kannst jedem Schritt eine eigene URL geben, um den Zurück-Button zu unterstützen, oder alles auf einer Seite mit lokalem State belassen. Beide Varianten posten dieselbe finale Payload.
Poste die gesamte Payload einmal
Poste nicht bei jedem Schritt. Sammle die Felder, während der Nutzer weitergeht, und sende eine Anfrage, wenn er fertig ist.
So funktioniert es
Drei einfache Schritte, bis Formular-Einsendungen in deinem E-Mail-Posteingang landen.
Erstelle dein Formular, setze die action-URL auf den Formpaste-Endpunkt und trage deinen Zugangsschlüssel ein.
Formular erstellen
Melde dich an, verifiziere deine E-Mail und erstelle einen Zugangsschlüssel im Dashboard.
Code kopieren
Füge das Snippet oben in dein Projekt ein. Wähle CSS oder Tailwind passend zu deiner Website.
<script setup lang="ts">
import { ref, reactive } from "vue";
const ENDPOINT = "https://api.formpaste.com/submit";
const step = ref(0);
const data = reactive({ name: "", email: "", message: "" });
async function submit() {
const body = new URLSearchParams({ access_key: "YOUR_ACCESS_KEY_HERE", ...data });
await fetch(ENDPOINT, { method: "POST", body });
}
</script>
<template>
<form @submit.prevent="submit">
<input v-if="step === 0" v-model="data.name" placeholder="Name" required />
<input v-else-if="step === 1" type="email" v-model="data.email" placeholder="Email" required />
<textarea v-else v-model="data.message" placeholder="Message" />
<button v-if="step > 0" type="button" @click="step--">Back</button>
<button v-if="step < 2" type="button" @click="step++">Next</button>
<button v-else type="submit">Submit</button>
</form>
</template>
Zugangsschlüssel hinzufügen
Ersetze den Platzhalter durch deinen Zugangsschlüssel, um Einsendungen zu empfangen.
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">Mehrstufiges Nuxt-Formular FAQ
Formular einfügen. Einsendungen erhalten.
Sofort, ohne Backend, Server oder Datenbanken einzurichten. 250 Einsendungen/Monat kostenlos - keine Kreditkarte.