Kaj je novega z obrazci v letu 2022? Podatkovna inteligenca PlatoBlockchain. Navpično iskanje. Ai.

Kaj je novega z obrazci v letu 2022?

Brskalniki nenehno dodajajo nove funkcije HTML, JavaScript in CSS. Tukaj je nekaj uporabnih dodatkov za delo z obrazci, ki ste jih morda spregledali ...

requestSubmit()

Safari 16 bo zadnji brskalnik za dodano podporo requestSubmit.

Preden pogledamo, kako .requestSubmit() deluje, spomnimo se, kako programsko oddajanje obrazca z JavaScriptom deluje pri uporabi .submit() metoda. Oddaja obrazca z submit() ne sproži dogodka oddaje. Torej je v naslednji kodi oddan obrazec, preventDefault() nima učinka in nič se ne beleži v konzolo:

const form = document.forms[0];
form.addEventListener('submit', function(event) {
  // code to submit the form goes here
  event.preventDefault();
  console.log('form submitted!');
});

document.querySelector('.btn').addEventListener('click', function() {
  form.submit();
})

.submit() bo prav tako prezrl kakršno koli preverjanje obrazca HTML. Glede na naslednjo oznako bo obrazec predložen, ko je vnos prazen, čeprav ima vnos a required atribut:

<form>   
  <label for="name">Name</label>
  <input required name="name" id="name" type="text">
</form>

.requestSubmit() je alternativni način oddaje obrazca z uporabo JavaScripta, vendar v nasprotju z .submit(), preverjanje obrazca HTML prepreči pošiljanje obrazca. Če vsi podatki, vneseni v obrazec, prestanejo preverjanje, bo submit dogodek bo sprožen, kar pomeni "obrazec oddan!" bi bil prijavljen v konzolo v naslednjem primeru:

form.addEventListener('submit', function(event) {
  event.preventDefault();
  console.log('form submitted!');
});

document.querySelector('.btn').addEventListener('click', function() {
  form.requestSubmit();
})

To bi lahko dosegli že s programskim klikom gumba za pošiljanje v obrazcu, vendar requestSubmit je morda bolj elegantna rešitev.

submitter lastnost oddajnega dogodka

O SubmitEvent.submitter pridobljeno premoženje popolna podpora med brskalniki z izdajo Safarija 15.4. Ta lastnost samo za branje določa <button> or <input type="submit"> element, ki je povzročil predložitev obrazca.

<form>
  <button name="foo" value="bar" type="submit">Bar</button>
  <button name="foo" value="baz" type="submit">Baz</button>
</form>

Če imate več gumbov za oddajo ali vnosov, od katerih ima vsak drugačno vrednost, bo strežniku poslana samo vrednost gumba ali vnosa, na katerega ste kliknili za oddajo obrazca, ne pa obeh vrednosti. To ni nič novega. Novo je to, da ima poslušalec dogodkov za dogodek pošiljanja zdaj dostop do event.submitter premoženje. To lahko uporabite za dodajanje razreda gumbu ali vnosu, ki je na primer sprožil oddajo obrazca, ali za pridobitev njegovega value ali katerega koli drugega atributa HTML.

document.forms[0].addEventListener('submit', function(event) {
  event.preventDefault();
  console.log(event.submitter.value);
  console.log(event.submitter.formaction);
  event.submitter.classList.add('spinner-animation');
})

formdata dogodek

To ni posebej novo, ampak samo dosegli podporo za več brskalnikov z izdajo Safarija 15. Glavni primer uporabe za formdata dogodek omogoča elementom po meri, da sodelujejo pri pošiljanju obrazcev. Zunaj spletnih komponent pa je lahko še vedno uporaben.

Dodate a formdata poslušalec dogodkov v obrazec, s katerim želite komunicirati:

document.querySelector('form').addEventListener('formdata', handleFormdata);

Dogodek se sproži z običajno oddajo obrazca HTML in tudi z pojavom new FormData(). event.formData hrani vse posredovane podatke.

function handleFormdata(event) {
  for (const entry of event.formData.values()) {
    console.log(entry);
  }
}

Funkcija povratnega klica za formdata poslušalec dogodkov se zažene, preden se podatki pošljejo strežniku, kar vam daje možnost, da dodate ali spremenite poslane podatke.

function handleFormdata(event) {
  event.formData.append('name', 'John');
}

Lahko bi spremenili ali dodali FormData znotraj obdelovalnika dogodkov predložitve, vendar formdata vam omogoča, da ločite logiko. Je tudi alternativa uporabi skritih vnosov v označevanju vašega obrazca v primerih, ko obrazec oddate »na staromoden način« – tj. zanašate se na vgrajeno funkcionalnost HTML za oddajo obrazca, namesto da bi to storili z fetch.

showPicker() za vhodne elemente

showPicker() je bilo podprta od Chrome 99, Firefox 101 in v prihajajočem Safariju 16. Za vnosni element, katerega atribut tipa je datum, mesec, teden, čas, datetime-local, barva ali datoteka, showPicker() ponuja programski način za prikaz izbirnega uporabniškega vmesnika. Za vnose barv in datotek je bilo vedno mogoče programsko prikazati izbirnik s klicem .click na vhodu:

document.querySelector('input[type="color"]').click();

Ta pristop ne deluje pri vnosih datumov, zato je bil dodan ta novi API. .showPicker() bo deloval tudi z barvnimi in datotečnimi vnosi, vendar ni nobene prave prednosti, če bi ga uporabili namesto njega .click().

Kaj je novega z obrazci v letu 2022?

Inertni atribut

Vedno je bilo mogoče onemogočiti več vnosov hkrati, tako da jih zavijete v HTML fieldset in onemogočanje fieldset:

Inert je nov atribut HTML. Ne gre le za obrazce, ampak so obrazci zagotovo ključni primer uporabe. Za razliko od disabled atribut, inert se lahko uporabi za a form element sam. Vse v obrazcu ne bo mogoče fokusirati in klikniti. Ko gre za podporne tehnologije, inert je podobna nastavitvi aria-hidden="true". Za razliko od disabled atribut, inert privzeto ne uporablja nobenega stila, vendar je enostavno dodati svojega:

form[inert] {
  opacity: .2;
}

Še več bo…

Največji je stil <select> elementov, kar so razvijalci želeli že desetletja. Zdi se, da bo kmalu končno postalo resničnost z uvedbo selectmenu.

Ampak to je to za zdaj! Nedavne posodobitve prinašajo popolno podporo brskalnika za funkcije, na katere smo čakali, zaradi česar so najboljše za produkcijsko uporabo.

Časovni žig:

Več od Triki CSS