Formulario Nuxt de varios pasos
Crea un formulario de varios pasos en Nuxt sin ruta de servidor. Recopila los campos a lo largo de los pasos en un objeto reactivo (o un store de Pinia si el wizard abarca varias rutas), y envía el POST una sola vez a Formpaste al final. Copia el componente wizard y añade tu clave de acceso.
Como construirlo
- Crea un formulario en tu panel de Formpaste y copia su clave de acceso.
- Copia el componente de varios pasos de abajo en una página o componente de Nuxt.
- Reemplaza YOUR_ACCESS_KEY_HERE con tu clave de acceso y despliega.
Prompt para tu agente de programación con IA
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.O conecta el servidor MCP de Formpaste con Claude Code, Codex, Cursor, Claude Desktop, VS Code o cualquier cliente mcp-remote. Ver la guía de configuración.
Puntos claves de Nuxt
Nuxt te da rutas de servidor, pero para un formulario no necesitas ninguna. Un formulario de Formpaste es un componente de Vue que hace POST directamente a Formpaste, así que no hay handler en server/api ni ruta de Nitro que escribir. Funciona con SSR o con un build estático de nuxi generate.
Sin ruta de servidor
No necesitas un endpoint server/api/ ni un handler de Nitro. El componente hace POST directamente al endpoint de Formpaste, lo que mantiene la app desplegable en cualquier sitio, incluido un build totalmente estático de nuxi generate.
Es un componente de Vue
Nuxt es Vue, así que el formulario es un componente de un solo archivo con v-model y un manejador @submit.prevent. Usa el código de Vue del selector de arriba - funciona igual dentro de Nuxt.
Pinia solo si quieres estado compartido
Para un formulario de varios pasos puedes guardar el estado del paso en un store de Pinia si abarca varias rutas, pero el estado local del componente es más simple para un asistente de una sola página. De cualquier forma, el último paso hace POST una sola vez a Formpaste.
SSR o estático, el mismo formulario
Como el formulario hace POST a un endpoint externo, funciona ya sea que despliegues con SSR o como sitio estático. Ningún código de servidor tuyo se ejecuta al momento del envío.
Que debes acertar
Un formulario, varias pantallas
Un formulario multi-paso es un único envío dividido en pasos dentro de la interfaz. Recoge todos los campos en el estado del cliente y envía el POST una sola vez al final.
Una ruta por paso es opcional
Puedes darle a cada paso su propia URL para soportar el botón de retroceso, o mantenerlo todo en una sola página con estado local. Ambos enfoques envían la misma carga final.
Envía toda la carga de una vez
No hagas un POST en cada paso. Reúne los campos a medida que el usuario avanza y envía una sola petición cuando termine.
Cómo funciona
Tres pasos simples para que los envíos de formularios lleguen a tu bandeja de entrada.
Crea tu formulario, apunta la URL de action al endpoint de Formpaste y añade tu clave de acceso.
Crea tu formulario
Regístrate, verifica tu correo y crea una clave de acceso en tu panel.
Copia el código
Pega el fragmento de arriba en tu proyecto. Elige CSS o Tailwind para que combine con tu sitio.
<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>
Añade tu clave de acceso
Reemplaza el marcador por tu clave de acceso para empezar a recibir envíos.
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">Formulario Nuxt de varios pasos FAQ
Pega un formulario. Recibe envíos.
Al instante, sin configurar ningún backend, servidor ni base de datos. 250 envíos/mes gratis, sin tarjeta de crédito.