Adresse-autocomplete i Shoporama

Indsæt ét script-tag i Shoporamas kode i body, så checkout'en får adresse-autocomplete med postnr. og by, eller kobl widget'en på dine egne selektorer.

2 min Niveau: Begynder ✓ Kode testet

Shoporama lader dig lægge egen kode på alle sider, så checkout'en kan få adresse-autocomplete uden en app. Vores script danadresse-auto med ét tag kender Shoporamas checkout-felter, så du behøver ikke finde selektorer.

1. Opret en browsernøgle

Opret en live-nøgle under Nøgler, og tilføj butikkens domæner under Tilladte domæner, fx minbutik.dk og www.minbutik.dk. Tester du på butikkens midlertidige Shoporama-adresse, så tilføj også den, skrevet præcist. En domænelåst nøgle virker kun på de domæner, så den kan trygt stå i sidens kildekode. Se Browsernøgler og tilladte domæner.

2. Indsæt script-tagget

Gå til Indstillinger (tandhjulet) → Kode i body, indsæt tagget med din browsernøgle, og klik Gem:

HTML#auto-tag
<script src="https://api.danadresse.dk/js/danadresse-auto.min.js"
        data-key="DIN_BROWSER_NØGLE" defer></script>

Scriptet genkender Shoporamas felter order_address, order_zipcode og order_city og den alternative leveringsadresse del_address, del_zipcode og del_city. De to adresser holdes adskilt. Når kunden vælger et forslag, udfyldes vej og husnr. (med etage og dør), postnr. og by. Skriver kunden adressen i hånden, tjekkes den, når kunden forlader feltet, med et "Mente du …?"-forslag. Checkout'en blokeres aldrig, og kun danske adresser røres.

3. Test

Læg en vare i kurven, gå til checkout, skriv en adresse med en stavefejl, og vælg et forslag. Tjek, at postnr. og by bliver udfyldt, også i leveringsadressen. Åbn browserens konsol, hvis intet sker:

  • API refused the request (403): … locked to … betyder, at domænet mangler under nøglens Tilladte domæner.
  • Findes intet felt, så tilføj data-debug til tagget, genindlæs, og læs hvad konsollen viser.

Hvis dit design bruger andre feltnavne

Et tilpasset design kan kalde felterne noget andet. Fortæl scriptet, hvor de er, med data-fields:

HTML#auto-fields
<script src="https://api.danadresse.dk/js/danadresse-auto.min.js"
        data-key="DIN_BROWSER_NØGLE"
        data-fields='[{"street":"#dit-adressefelt","zip":"#dit-postnummerfelt","city":"#dit-byfelt"}]' defer></script>

Du kan mappe street, house, floor, door, line2, zip, city og country. Har din checkout separate felter til vej og husnummer, så map både street og house.

Eller: din egen init-kode

Vil du have fuld kontrol over, hvad der udfyldes, så kobl adresse-widget'en på selv. Find felterne med Inspicér (et id bruges som #id, et navn som input[name="…"]), ret de tre selektorer, og indsæt din nøgle:

JavaScript#init-js
const API_KEY = "DIN_BROWSER_NØGLE";

// Ret til dine felter (se trin 2)
const FIELDS = {
  adresse: "#dit-adressefelt",
  postnr: "#dit-postnrfelt",
  by: "#dit-byfelt",
};

function setField(el, value, events) {
  if (!el || value == null) return;
  const setter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), "value").set;
  setter.call(el, value);
  for (const type of events || ["input", "change"]) {
    el.dispatchEvent(new Event(type, { bubbles: true }));
  }
}

function streetLine(a) {
  let line = a.vejnavn + " " + a.husnr;
  if (a.etage) line += ", " + a.etage + ".";
  if (a["dør"]) line += " " + a["dør"];
  return line;
}

function bindAll() {
  document.querySelectorAll(FIELDS.adresse).forEach((input) => {
    DanadresseAutocomplete.attach(input, {
      apiKey: API_KEY,
      onSelect(a) {
        setField(input, streetLine(a), ["change"]);
        setField(document.querySelector(FIELDS.postnr), a.postnr);
        setField(document.querySelector(FIELDS.by), a.postnrnavn);
      },
    });
  });
}

function start() {
  bindAll();
  new MutationObserver(bindAll).observe(document.body, { childList: true, subtree: true });
}

if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", start);
else start();

Indsæt den lige før </body> i den skabelon, checkout-siden bruger, eller under Kode i body:

HTML#template-html
<script src="https://danadresse.dk/static/js/danadresse-autocomplete-1.0.0.js"></script>
<script>
  /* indsæt init-koden ovenfor her */
</script>

Vil du tjekke adressen på serveren, efter ordren er afgivet, kræver det en integration, der læser ordrerne. Se Datavask i checkout.

Næste skridt

Relaterede guides

Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)

Prøv det med en gratis nøgle

2 000 kald/måned på gratisplanen. Intet kreditkort.

Opret konto →