ID du formulaire

Squarespace

Collez un formulaire HTML dans un bloc de code Squarespace. Le HTML simple fonctionne avec tous les plans ; ajouter du JavaScript nécessite le plan Core ou supérieur.

Le bloc Form de Squarespace stocke les soumissions dans Squarespace et les envoie vers les connexions qu'il prend en charge. Il n'a aucun réglage pour une URL d'action externe. Un bloc Code en mode HTML affiche votre propre formulaire dans la page, qui peut donc envoyer directement à Ikiform.

PlanCe qu'un bloc de code peut exécuter
BasicHTML et CSS. Les scripts et iframes ne s'affichent pas : utilisez le formulaire simple.
Core, Plus, AdvancedHTML, CSS et JavaScript. Vous pouvez ajouter la version améliorée.

Ajoutez le bloc de code

  1. Insérez un bloc Code

    Modifiez la page, ajoutez un bloc et choisissez Code. Réglez Mode sur HTML et désactivez Display Source ; sinon, le formulaire s'affiche comme du texte.

  2. Collez le formulaire

    Bloc Code
    <form id="contact" class="ikiform" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
      <label>Name <input name="name" autocomplete="name" required></label>
      <label>Email <input name="email" type="email" autocomplete="email" required></label>
      <label>Message <textarea name="message" rows="5"></textarea></label>
      <input type="hidden" name="_redirect" value="https://example.com/thank-you">
      <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
      <button type="submit" class="sqs-block-button-element">Send</button>
      <p role="status" data-status></p>
    </form>
    
    <style>
      .ikiform { display: grid; gap: 12px; max-width: 480px; }
      .ikiform label { display: grid; gap: 4px; }
      .ikiform input, .ikiform textarea { font: inherit; padding: 10px 12px; border: 1px solid currentColor; }
    </style>

    sqs-block-button-element reprend le style de bouton de votre site. font: inherit et currentColor récupèrent la police et la couleur du texte de la section, donc le formulaire s'accorde aux sections claires comme sombres.

  3. Créez la page de remerciement

    Ajoutez une page sous Not linked pour qu'elle n'apparaisse pas dans votre navigation, et utilisez son URL complète comme _redirect. Ou définissez-la comme Redirect after submit dans les paramètres du formulaire et retirez l'input masqué.

_redirect n'est suivi que si le formulaire a des domaines autorisés qui incluent le domaine de la page. Sans eux, les visiteurs voient la page de remerciement hébergée par Ikiform.

Rester sur la page (Core et supérieur)

Pour afficher le résultat sans quitter la page, collez ce script sous le formulaire, dans le même bloc de code. Il envoie avec fetch, écrit le message d'Ikiform dans la ligne de statut sous le bouton et ignore _redirect. Le formulaire envoie toujours normalement si le script ne se charge pas.

Bloc Code, sous le formulaire
<script>
  const form = document.querySelector("#contact");
  const button = form.querySelector("button");
  const status = form.querySelector("[data-status]");

  form.addEventListener("submit", async (event) => {
    event.preventDefault();
    button.disabled = true;
    status.textContent = "Sending";
    try {
      const response = await fetch(form.action, {
        method: "POST",
        headers: { Accept: "application/json" },
        body: new FormData(form),
      });
      const result = await response.json();
      const fields = Object.entries(result.ok ? {} : result.error.fields ?? {});
      const problems = fields.map(([name, messages]) => name + ": " + messages[0]).join(". ");
      status.textContent = result.ok ? "Thanks, we got it." : problems || result.error.message;
      if (result.ok) form.reset();
    } catch {
      status.textContent = "Couldn't reach the server. Try again.";
    } finally {
      button.disabled = false;
    }
  });
</script>

Les erreurs de champ sont écrites sur la même ligne, précédées du nom du champ, comme email: This field is required. Pour un message sous chaque champ, utilisez les emplacements de JavaScript pur. Un formulaire dont le contrôle anti-spam est Ikiform doit garder la version simple, car les envois fetch reçoivent 403 challenge_required au lieu de la page de vérification.

Domaines autorisés

Squarespace sert chaque site sur un domaine intégré, en plus des domaines que vous connectez.

Où tourne le formulaireÀ ajouter aux domaines autorisés
Domaine intégréyour-site.squarespace.com
Domaine connectéexample.com, qui couvre aussi www.example.com
  • N'ajoutez jamais squarespace.com seul. Tous les sites de cet hébergeur correspondraient, y compris ceux des autres.

Checklist de test

  1. Ouvrez la page dans une fenêtre de navigation privée. Les blocs de code peuvent ne pas s'afficher quand vous êtes connecté, même si les visiteurs les voient.
  2. Envoyez le formulaire sur le domaine intégré et sur votre domaine connecté, et vérifiez que les deux soumissions apparaissent dans Ikiform.
  3. Vérifiez que vous arrivez sur votre page de remerciement Not linked, et non sur celle d'Ikiform.
  4. Sur Basic, vérifiez que le formulaire envoie toujours. Il n'a besoin d'aucun script.

Dépannage

Ce que vous voyezPourquoiSolution
Le code s'affiche comme du texte sur la pageDisplay Source est activé, ou Mode n'est pas sur HTMLRéglez Mode sur HTML et désactivez Display Source.
Le script amélioré ne s'exécute jamaisLe site est sur Basic, où les scripts des blocs de code ne s'affichent pasGardez le formulaire simple, ou passez à Core.
La page de remerciement d'Ikiform au lieu de la vôtreAucun domaine autorisé, ou _redirect utilise http: ou un autre domaineAjoutez vos domaines, ou définissez Redirect after submit.
Les soumissions arrivent dans le filtre spam avec origin_mismatchLa page qui a envoyé ne fait pas partie des domaines autorisés du formulaireAjoutez l'hôte du tableau ci-dessus. Avec Reject, les mêmes envois reçoivent plutôt 403 origin_not_allowed.
Le formulaire semble sans style dans l'éditeur mais s'affiche bien pour les visiteursLes blocs de code ne s'affichent pas toujours quand vous êtes connectéVérifiez la page dans une fenêtre de navigation privée.