Milyen újdonságok vannak az űrlapokkal 2022-ben? PlatoBlockchain adatintelligencia. Függőleges keresés. Ai.

Mi újdonság az űrlapokkal 2022-ben?

A böngészők folyamatosan új HTML, JavaScript és CSS funkciókat adnak hozzá. Íme néhány hasznos kiegészítés az űrlapokkal való munkavégzéshez, amelyeket esetleg kihagyott…

requestSubmit()

Safari 16 lesz az utolsó böngésző, amelyhez támogatást kell hozzáadni requestSubmit.

Mielőtt megnéznénk, hogyan .requestSubmit() működik, emlékeztessük magunkat, hogyan működik egy űrlap programozott beküldése JavaScript használatával a .submit() módszer. Űrlap beküldése a submit() nem indít elküldési eseményt. Tehát a következő kódban az űrlap elküldésre kerül, preventDefault() nincs hatása, és semmi sem kerül naplózásra a konzolon:

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() figyelmen kívül hagyja a HTML űrlap érvényesítését is. A következő jelölést figyelembe véve az űrlap akkor kerül elküldésre, ha a bemenet üres, annak ellenére, hogy a bemenet rendelkezik a required tulajdonság:

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

.requestSubmit() egy alternatív módja az űrlap beküldésének JavaScript használatával, de ezzel ellentétben .submit(), A HTML űrlap érvényesítése megakadályozza az űrlap elküldését. Ha az űrlapon megadott összes adat átmegy az érvényesítésen, a submit esemény ki lesz rúgva, ami azt jelenti, hogy „űrlap beküldve!” a következő példában naplózzák a konzolra:

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

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

Ezt már elérheti, ha programozottan kattint az űrlap elküldése gombjára, de requestSubmit talán elegánsabb megoldás.

submitter az esemény benyújtásának tulajdonsága

A SubmitEvent.submitter szerzett ingatlan teljes, több böngésző támogatás a Safari 15.4 kiadásával. Ez a csak olvasható tulajdonság határozza meg a <button> or <input type="submit"> elem, amely egy űrlap elküldését okozta.

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

Ha több elküldő gombja vagy bemenete van, mindegyik más értékkel, akkor csak annak a gombnak vagy bemenetnek az értéke kerül elküldésre a szervernek, amelyre az űrlap elküldéséhez kattintottak, és nem mindkét érték. Ez nem újdonság. Az újdonság az, hogy a beküldő esemény eseményfigyelője mostantól hozzáfér a event.submitter ingatlan. Ezzel például hozzáadhat egy osztályt ahhoz a gombhoz vagy bemenethez, amely kiváltotta az űrlap elküldését, vagy lekérheti a value vagy bármely más HTML attribútuma.

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 esemény

Ez nem különösebben új, de csak elérte a böngészők közötti támogatást a Safari 15 kiadásával. A fő használati eset a formdata Az esemény lehetővé teszi az egyéni elemek részvételét az űrlapok beküldésében. A webes összetevőkön kívül azonban még mindig hasznos lehet.

Hozzáadsz a formdata eseményfigyelő ahhoz az űrlaphoz, amellyel kapcsolatba szeretne lépni:

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

Az eseményt egy szokásos HTML űrlap beküldése és egy előfordulása is elindítja new FormData(). event.formData tartalmazza az összes benyújtott adatot.

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

A visszahívási funkció a formdata Az eseményfigyelő lefut, mielőtt az adatokat elküldené a szervernek, így lehetőség nyílik a küldendő adatok hozzáadására vagy módosítására.

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

Módosíthatta vagy hozzáfűzhette volna a FormData az elküldés eseménykezelőjén belül, de formdata lehetővé teszi a logika elkülönítését. Alternatíva a rejtett bemenetek használatára az űrlap jelölésében olyan esetekben, amikor az űrlapot „régi módon” küldi be – azaz a HTML beépített funkcióira hagyatkozik az űrlap elküldésekor, nem pedig fetch.

showPicker() bemeneti elemekhez

showPicker() már támogatott a Chrome 99, a Firefox 101 és a közelgő Safari 16 óta. Olyan beviteli elem esetén, amelynek típusattribútuma Dátum, Hónap, Hét, Idő, datetime-local, szín vagy fájl, showPicker() programozott módot biztosít a kiválasztási felhasználói felület megjelenítésére. Szín- és fájlbevitel esetén mindig is lehetséges volt a picker programozott megjelenítése hívással .click a bemeneten:

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

Ez a megközelítés nem működik dátumbevitellel, ezért került hozzáadásra az új API. .showPicker() szín- és fájlbevitellel is működik, de nincs valódi előnye a használatának .click().

Mi újdonság az űrlapokkal 2022-ben?

Inert attribútum

Mindig is lehetséges volt egyszerre több bemenet letiltása HTML-be csomagolva fieldset és letiltja a fieldset:

Az inert egy új HTML attribútum. Ez nem csak az űrlapokra vonatkozik, de az űrlapok minden bizonnyal kulcsfontosságú felhasználási esetek. ellentétben a disabled tulajdonság, inert alkalmazható a form maga az elem. Az űrlapon belül minden nem fókuszálható és nem kattintható. Ha a kisegítő technológiákról van szó, inert beállításhoz hasonló aria-hidden="true". ellentétben a disabled tulajdonság, inert alapértelmezés szerint nem alkalmaz semmilyen stílust, de könnyen hozzáadhat saját stílust:

form[inert] {
  opacity: .2;
}

Jön még…

A nagy a styling <select> elemeket, amire a fejlesztők évtizedek óta vágytak. Úgy tűnik, hogy a bevezetéssel hamarosan valósággá válik selectmenu.

De egyenlőre ennyi! A legutóbbi frissítések teljes böngésző-támogatást biztosítanak az általunk várt funkciókhoz, így azok elsőrendűek az éles használatra.

Időbélyeg:

Még több CSS trükkök