Näppäimistönavigointi ehdotuslistoissa
Käsitelkää ArrowUp-, ArrowDown-, Enter- ja Escape-näppäimiä ehdotusten navigointiin ja valintaan ilman hiirtä
Näppäimistönavigointi ehdotuslistoissa on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.
onKeyDown-tapahtuman käsittely tekstikentässä
Näppäimistökäsittelijä liitetään tekstikentän onKeyDown-tapahtumaan, ei vanhentuneeseen onKeyPress- tai onKeyUp-tapahtumaan. keyDown laukeaa ennen kuin merkki ilmestyy tekstikenttään, joten ArrowDown-, ArrowUp-, Enter- ja Escape-näppäimet voidaan käsitellä ennen selaimen oletustoimintaa.
ArrowDown-näppäimen toiminta
Kun käyttäjä painaa ArrowDown-näppäintä, selectedIndex-arvoa kasvatetaan yhdellä ja sen ylärajaksi rajoitetaan suggestions.length - 1: setSelectedIndex(prev => Math.min(prev + 1, suggestions.length - 1)). Lisäksi kutsutaan e.preventDefault(), jotta kohdistin ei siirry tekstikentän tekstin loppuun. Tämä on selaimen oletustoiminta, kun ArrowDown-näppäintä painetaan tekstikentässä.
ArrowUp-näppäimen toiminta
Kun käyttäjä painaa ArrowUp-näppäintä, selectedIndex-arvoa pienennetään yhdellä ja sen alarajaksi rajoitetaan 0: setSelectedIndex(prev => Math.max(prev - 1, 0)). Arvon voi myös rajoittaa arvoon -1, joka tarkoittaa, ettei mitään ole valittu. Tällöin käyttäjä voi poistaa valinnan ja jatkaa kirjoittamista vapaasti indeksin 0 yläpuolelle siirryttäessä.
Enter-näppäimen toiminta
Kun Enter-näppäintä painetaan ja selectedIndex >= 0, korostettu ehdotus valitaan: inputValue asetetaan arvoon suggestions[selectedIndex], pudotusvalikko suljetaan ja selectedIndex nollataan arvoon -1. Jos mitään ehdotusta ei ole korostettu (selectedIndex on -1), tavallisen lomakkeen lähetyksen tai haun annetaan jatkua.
Escape-näppäimen toiminta
Kun Escape-näppäintä painetaan, pudotusvalikko suljetaan asettamalla isOpen arvoon false ja selectedIndex nollataan arvoon -1. Syötteen arvoa ei tyhjennetä: käyttäjä haluaa vain sulkea ehdotukset valitsematta mitään ja säilyttää kirjoittamansa tekstin jatkomuokkausta varten.
Tab-näppäimen toiminta
Kun Tab-näppäintä painetaan, pudotusvalikko suljetaan, koska selain siirtää fokuksen joka tapauksessa seuraavaan kohdistettavaan elementtiin. Asettamalla isOpen arvoon false Tab-näppäimen yhteydessä varmistetaan, ettei pudotusvalikko jää auki fokuksen siirtyessä pois tekstikentästä. Kutsua preventDefault() ei tarvita, vaan selaimen annetaan käsitellä normaali sarkainjärjestys.
Valitun rivin visuaalinen korostus
Korostetun ehdotuksen on erotuttava visuaalisesti. Aktiivista tyyliä käytetään ehdotukseen, jonka indeksi on selectedIndex: className={index === selectedIndex ? 'suggestion suggestion--active' : 'suggestion'}. Aktiivisessa tilassa taustaväriä yleensä muutetaan, jotta on selvää, mikä kohde valitaan Enter-näppäintä painettaessa.
Valitun kohteen vierittäminen näkyviin
Kun ehdotusluettelolla on enimmäiskorkeus ja sitä vieritetään, korostettu kohde voi näppäimistöllä liikuttaessa vierittyä pois näkyvistä. Tallenna ehdotusten DOM-elementit ref-taulukkoon ja kutsu listItemRefs.current[selectedIndex]?.scrollIntoView({ block: 'nearest' }) aina, kun selectedIndex muuttuu. nearest-lohkoarvo minimoi vierityksen määrän.
selectedIndex-arvon synkronointi ehdotusten muuttuessa
Kun syöte muuttuu ja uusi suodatettu luettelo tulee näkyviin, selectedIndex nollataan arvoon -1 saman tilapäivityksen yhteydessä tai useEffect-hookissa, jonka riippuvuutena ehdotukset ovat. Vanhentuneet indeksit, jotka viittaavat poistettuihin kohteisiin, saisivat käyttäjän valitsemaan väärän ehdotuksen.
Näppäimistökäytön täydellinen kulku
Täydellinen käyttäjäkulku on seuraava: käyttäjä kirjoittaa suodattaakseen ehdotuksia, ArrowDown korostaa ensimmäisen kohteen, seuraavat ArrowDown-painallukset siirtävät korostusta listassa alaspäin, ArrowUp siirtää sitä takaisin ylöspäin, Enter valitsee korostetun kohteen ja Escape sulkee ehdotukset tekemättä valintaa. Tämä kattaa kaikki vakiomuotoiset näppäimistökäytön toimintatavat, joita käyttäjät autocomplete-kentältä odottavat.
Oletustoiminnan estäminen nuolinäppäimillä
Kutsukaa aina e.preventDefault(), kun tekstikentän sisällä käsitellään ArrowDown- tai ArrowUp-näppäintä. Ilman tätä ArrowDown siirtää tekstikohdistimen loppuun ja ArrowUp alkuun. Nämä kohdistimen liikkeet olisivat ristiriidassa selectedIndex-navigoinnin kanssa ja aiheuttaisivat hämmentävää toimintaa.
Näppäimistön näppäinmääritys
Mitä pitäisi tapahtua, kun käyttäjä painaa Enter-näppäintä ja kohdassa selectedIndex = 2 oleva ehdotus on korostettuna?
Oppitunnin kertaus: näppäimistönavigointi
Käsittele syötteen onKeyDown-tapahtuma. ArrowDown kasvattaa selectedIndex-arvoa (ylärajaan rajattuna), ArrowUp pienentää sitä (alarajaan 0 tai -1 rajattuna), Enter valitsee korostetun kohteen, Escape sulkee valikon tekemättä valintaa ja Tab sulkee valikon sekä antaa selaimen siirtää kohdistuksen. Kutsu aina preventDefault-metodia nuolinäppäimille ja vieritä korostettu kohde näkyviin.
Opi React tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 88
- Oppitunnit
- 324
Usein kysytyt kysymykset
Onko oppitunti ”Näppäimistönavigointi ehdotuslistoissa” ilmainen?
Kyllä – oppitunnin ”Näppäimistönavigointi ehdotuslistoissa” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Näppäimistönavigointi ehdotuslistoissa”?
Käsitelkää ArrowUp-, ArrowDown-, Enter- ja Escape-näppäimiä ehdotusten navigointiin ja valintaan ilman hiirtä Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Näppäimistönavigointi ehdotuslistoissa”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?
Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Kontrolloitu syötekenttä ehdotuslistalla
- Näppäimistönavigointi ehdotuslistoissa
- Asynkroniset ehdotukset debouncella
- Autocomplete-widgettien saavutettavuus