Kifejezés keresése az adott oldalon

JavaScript enter event(Kaszi1986) kérdése kapcsán "disy68" javaslata (Lépkedés a találatok között az UP-DOWN billentyűkkel...)

Kérdező

A következőben szeretnék egy kis segítséget kérni: Van egy KereSőm, ami gombra való kattintással működik is. Azt szeretném, hogy ne csak az oldalon levő gomb lenyomására keressen, hanem az ENTER gomb lenyomására is.

Hozzászóló

Szerintem, egyszerűbb megoldás az, ha egy form-ot hozol létre a kErEsésnek (azaz, a "search" azonosítójú div helyett form-ot használsz), és nem a gomb click-eseményét, hanem a form submit-eseményét kapod el.

Kérdező

Tudnátok esetleg egy konkrét működő példát írni? Mert nekem ez így nem működik, vagyis az enter-re azt írja ki h nem találja a keresett szavat, de ha a gombra kattintok akkor meg okés

Hozzászóló

Ott a példa az előző hozzászólásomban. Csak annyit kell tenned -- mint írtam is --, hogy a search div-edet lecseréled a(előző hozzászólásomban található) search form-ra.
Ha mindent a leírtak szerint csinálsz, akkor ez nem lehetséges (ott más gond lesz). Ha esetleg megosztanád az oldalt (ha publikus), ahol használod ezt (vagy ha nem lehetséges, akkor egy teszt-oldalt készítenél, ahol megnézhetnénk "működés közben"), többet lehetne mondani.

Hozzászóló

Na, egy kicsit vizsgálódtam a témával (és a kóddal) kapcsolatban, a következők derültek ki:
1. Ha submit típusú input van gombként, akkor az IE problémás (mivel nem "veszti el" a fókuszt a gomb -- persze, direkt kikényszerítve -- blur() használatával -- működik, de ezzel plusz egy "kötést" alkalmazunk). Sima button tag-et kell használni (de ezzel nincs gond, mert a form-on belül submit-ként működik).
2. A kereső-függvényben (még a keresés előtt) kényszeríteni kell az input mezőről a fókusz elvesztését (blur() hívása), mert Chrome-ban egyébként nem működik az Enter használata esetén.
3. A keresés előtt el kell tárolni az input mező értékét, törölni kell a tartalmát, majd a keresés után visszaállítani. Erre azért van szükség, hogy a kereső-mező tartalmát ne "találja meg" (ez "kicselezhető" lenne -- nem IE esetén -- pl. iframe használatával, mivel a find() alapesetben nem keres frame-ekben, de úgy gondolom, hogy ez nem lenne követendő, ráadásul, IE-nél nem is működne).
4. Egy kis továbbfejlesztés (talán): ha nincs már találat, akkor a kijelölést (ami az utolsó találatot "jelzi") töröljük, majd még egyszer keresünk. Ezzel elérjük azt, hogy a találatok "körkörösen" látszódjanak (azaz, az utolsó találat után nem a hibaüzenet jön, hanem az első találatra "áll").
Mellékeltem a fentiek (és a kódod) alapján készített megvalósítást. Tesztelve FF 33.0.2, IE 9 és Chrome 39 alatt, mindenhol működik. Nézd meg, módosítsd az igényeidnek megfelelően.

Kérdező

Végülis én egy olyan keresőt szerettem volna létrehozni, mint pl. a böngészőben ha nyomsz egy Ctrl+F-et, beírsz valamit és az enter lenyomásával ugrál a találatokra...

MOMENTO

Végül is a javított, saját kód és munka helyett, elfogadva egy kész megoldás...