Formulaires✨ Premium

Success Checkmark

Dès que le champ respecte sa règle (5 caractères par défaut, ou votre pattern), son cadre passe au vert et une coche se trace à droite.

JSSVGValidation

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Formulaires comprend 20 effets, dont 2 gratuits. Découvrir la catégorie →

3 exemples d'usage

Code postal dans une adresse de facturation — un petit champ parmi d'autres — Success Checkmark exemple 1

① Code postal dans une adresse de facturation — un petit champ parmi d'autres

QuandLe client remplit son adresse avant de payer : la coche se trace au cinquième chiffre du code postal, pas avant.
PourquoiDans un formulaire long, un repère sur le seul champ qui a une règle stricte rassure sans transformer toute la page en tableau de bord ; le client voit qu'il peut passer à la ville.
RéglagesChamp de 118 px en thème clair (--okmk-field:#fff, --okmk-border:#d6d3d1, --okmk-ok:#15803d, --okmk-ok-field:#f0fdf4, --okmk-font-size:.875rem), règle portée par le HTML : pattern="[0-9]{5}", minlength="5", maxlength="5", inputmode="numeric", autocomplete="postal-code". Frappe pilotée par la scène pour la capture.
Activation d'une carte cadeau — le code collé d'un coup — Success Checkmark exemple 2

② Activation d'une carte cadeau — le code collé d'un coup

QuandLe client colle le code imprimé au dos de sa carte : un seul événement input, et la coche se dessine aussitôt si le format 4-4-4 est respecté.
PourquoiC'est l'unique champ de la page : le grand format et la coche disent tout de suite que le code est lisible, avant même de cliquer sur Activer.
RéglagesPleine largeur (--okmk-width:100%), texte agrandi (--okmk-font-size:1.125rem), tons dorés (--okmk-border:rgba(214,190,150,.28), --okmk-ok:#7fd1a8), pattern="[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}" et minlength="14". Le collage est simulé par la scène (valeur posée puis événement input).
Zone de danger — retaper le nom du projet avant de le supprimer — Success Checkmark exemple 3

③ Zone de danger — retaper le nom du projet avant de le supprimer

QuandAvant une suppression définitive, l'utilisateur doit taper le nom exact du projet. La coche n'apparaît qu'à la dernière lettre et le bouton Supprimer s'active avec elle.
PourquoiLe garde-fou se lit d'un coup d'œil : tant qu'il n'y a pas de coche, rien ne part. La règle est un simple pattern, sans code supplémentaire dans l'effet.
Réglagespattern="atlas-bordereaux" et minlength="16", thème sombre (--okmk-field:#0d1117, --okmk-ok:#3fb950). Le bouton est activé par la scène, qui observe la classe is-valid posée par l'effet sur .okmk-group.

Comment ça marche

À chaque événement input (frappe, collage, saisie automatique), le script décide si le champ est bon : longueur au moins égale à son attribut minlength (5 dans le HTML livré) et aucune violation de pattern, de type ni de maxlength. Les règles sont donc celles que vous écrivez dans le HTML, pas une constante cachée dans le script.

Quand le champ devient bon, .okmk-group reçoit is-valid : cadre et fond verts, coche qui apparaît en fondu (0,3 s) pendant que son tracé se dessine (stroke-dashoffset de 24 à 0 en 0,4 s, @keyframes okmk-draw). Repasse-t-il sous la règle, tout redevient neutre ; au retour suivant, la coche se redessine depuis le début.

Le champ porte un vrai name et part avec le formulaire. Un reset du formulaire remet la coche à zéro. Chaque .fx-0285-root fonctionne seul ; rien n'est posé sur window.

Accessibilité

  • Nom du champ : étiquette réelle dans un <label> masqué visuellement (« Code de 5 caractères minimum »), à adapter à votre usage ; le placeholder ne sert que d'exemple de saisie.
  • Succès annoncé : une zone role="status" dit « Valide » une seule fois, au passage au vert, sans répéter à chaque touche. La coche SVG est aria-hidden : elle n'est pas lue comme une image sans nom.
  • Clavier et toucher : c'est un champ texte standard, rien ne dépend de la souris.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, la coche apparaît directement complète, sans tracé.
  • Ce que l'effet ne fait pas : il n'affiche aucun message quand la saisie est incomplète. Pour expliquer la règle, ajoutez une aide visible sous le champ.

Compatibilité navigateur

1,3 Ko de JavaScript, CSS avec variables, un SVG en ligne. Mesuré le 08/11/2026 dans Chromium, Firefox et WebKit (Playwright) : tracé encore en cours 150 ms après le passage au vert puis complet, redessiné après un effacement, deux copies indépendantes, valeur envoyée par FormData, toucher à 390 px, mouvement réduit, aucune erreur. Version la plus récente utilisée selon @mdn/browser-compat-data : minLength (Chrome 40, Firefox 51, Safari 10.1) ; NodeList.forEach demande Chrome 51.

Chrome 51+✓ Complet (mesuré)
Firefox 51+✓ Complet (mesuré)
Safari 10.1+✓ Complet (mesuré dans WebKit)
Edge 79+✓ Complet (moteur Chromium)
iOS Safari 10.3+✓ Non vérifié sur appareil réel
Android Chrome 51+✓ Complet (moteur Chromium)

Sans JavaScript, le champ reste utilisable et le navigateur applique encore minlength et pattern à l'envoi ; seule la coche manque.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0285-root">
  <div class="okmk-group">
    <label class="okmk-field">
      <span class="okmk-sr">Code de 5 caractères minimum</span>
      <input class="okmk-input" type="text" name="code" minlength="5" autocomplete="off" placeholder="Tapez 5+ caractères">
    </label>
    <span class="okmk-check" aria-hidden="true">
      <svg viewBox="0 0 24 24" focusable="false"><path d="M5 13l4 4L19 7"></path></svg>
    </span>
    <span class="okmk-sr" role="status"><span class="okmk-status-text" hidden>Valide</span></span>
  </div>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
Règle de validité (HTML — minlength, pattern, type, maxlength sur le champ) minlength="5", aucun pattern Sans minlength, un seul caractère suffit. Ex. : type="email" pour une adresse, pattern="[0-9]{6}" pour un code reçu par SMS.
Couleurs de succès (CSS — --okmk-ok, --okmk-ok-field sur .fx-0285-root) #10b981 · vert à 5 % Couleur du cadre et de la coche, puis teinte du fond du champ quand il est bon.
Champ au repos (CSS — --okmk-field, --okmk-border, --okmk-focus, --okmk-text) blanc à 5 % · blanc à 10 % · #6366f1 · #fff Pour un formulaire clair : --okmk-field:#fff; --okmk-border:#d6d3d1; --okmk-text:#1c1917.
Largeur et taille du texte (CSS — --okmk-width, --okmk-font-size) 280px · 1rem La largeur est un maximum : le champ se resserre dans une colonne étroite. 100% pour suivre son conteneur.
Cadre de démonstration (CSS — --okmk-bg, --okmk-min-height) #0a0a0f · 300px Dans une vraie page : --okmk-bg:transparent; --okmk-min-height:0.
Vitesse du tracé (CSS — animation: okmk-draw .4s ease .05s) 0,4 s après 50 ms Allongez à 0,6 s pour une coche plus visible sur un grand champ.
Texte annoncé (HTML — .okmk-status-text) « Valide » Remplacez par un message parlant : « Code postal reconnu », « Code accepté ».

FAQ

Oui : la règle se lit dans le HTML. Posez un pattern (ex. [0-9]{5}) et un minlength égal à la longueur attendue ; la coche n'apparaît que lorsque les deux sont satisfaits. Pour un IBAN avec contrôle de clé, il faut un calcul en plus : l'effet ne vérifie que la forme.
Non, l'effet ne fait qu'afficher l'état. C'est le navigateur qui bloque l'envoi grâce à minlength et pattern, avec sa propre bulle, quand le champ a été modifié par l'utilisateur. Pour piloter un bouton (comme dans la zone de danger), lisez la classe is-valid sur .okmk-group.
Oui : l'animation okmk-draw n'est attachée qu'à l'état is-valid. Chaque fois que le champ redevient bon, le tracé repart de zéro ; tant qu'il reste bon, la coche ne bouge plus et rien n'est rejoué à chaque touche.