Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Taci
    addikt

    Sziasztok!

    Van egy Windows és Android alatti böngőszőkben jól működő keresőm, ami viszont Safarin nem 100%-os.

    Első körben kezdeném mondjuk azzal, hogy nem ismeri fel a keyup eventet:

    elementMainSearch.addEventListener("keyup", function(event) {
      console.log('Typing to searchbox.');
    }

    Ez például csak akkor ír a konzolba Safari alatt, ha Shift vagy Ctrl gombokat nyomok. Semmi másra nem reagál. A keresőmezőbe persze beírja amit írok, csak a lenyomáshoz (felemeléshez) kötött funkciókat nem hívja meg.

    Hogyan lehet ezt megoldani? Hátha ti már tapasztaltátok (és megoldottátok ezt).

    Aztán később van egy feltétel, ahol az Enter leütését vizsgálom:
    if (event.keyCode === 13) {}
    Nem tudom, abba is belerondít-e, odáig még "nem jutott el", de inkább már nem írok külön bejegyzést erről.

    Köszi!

    Annyira haladtam a témában, hogy valamiért a keyup-ot nem szereti, viszont a keydown-nal és a keypress-szel nincs baja. (Fórumbejegyzésekben találtam ezt az infót, kipróbáltam, és valóban.)

    Viszont azért használtam keyup-ot, mert az esemény után figyeltem, hogy változik-e a keresőmező tartalma (nem-e marad üres), és ha karatert ír be a user (tehát nem csak belekattint, és nyom egy shift-et), akkor megjelenik a mező törlése gomb.

    var elementMainSearch = document.getElementById("mainSearch");
    elementMainSearch.addEventListener("keyup", function(event) {
      var elementMainSearchValue = elementMainSearch.elements[0].value;
      console.log('elementMainSearchValue: ' + elementMainSearchValue);
      if (elementMainSearchValue != ""){
        //törlés gomb megjelenítése
      }
    }

    Így ha beírtam, hogy q, akkor a konzolba kiírta, hogy elementMainSearchValue: q, és megjelent a törlés gomb.

    Viszont így, hogy Safarival ez valamiért nem működik, muszáj vagyok keydown-ra vagy keypress-re cserélni a keyup-ot.
    Ezekkel viszont az a baj, hogy az eventjük után még nem változik a keresőmező tartalma.
    Tehát a fenti kód keydown-nal vagy keypress-szel ezeket az eredményeket adja:
    q --> elementMainSearchValue:  
    qw --> elementMainSearchValue: q
    qwe --> elementMainSearchValue: qw
    stb.

    Így ha csak 1 karaktert ír be a user a keresőmezőbe, nem lesz aktív a gomb, mert kell mellé még egy leütés.

    Hogyan tudom szerintetek ezt megoldani?
    Akár más struktúrával is. (Elindultam a beírt keycode-ok vizsgálatával (Ctrl - 17, Shift - 16, Tab - 9, Enter/Return - 13, Option - 18, Command - 91 stb.), de ott túl sokat kell lekezelni (minden gombot, ami szám vagy betű), az a megoldás nem tetszik.)

    UPD.:
    Az input event lesz a jó, úgy látom.

  • Taci
    addikt

    Sziasztok!

    Van egy Windows és Android alatti böngőszőkben jól működő keresőm, ami viszont Safarin nem 100%-os.

    Első körben kezdeném mondjuk azzal, hogy nem ismeri fel a keyup eventet:

    elementMainSearch.addEventListener("keyup", function(event) {
      console.log('Typing to searchbox.');
    }

    Ez például csak akkor ír a konzolba Safari alatt, ha Shift vagy Ctrl gombokat nyomok. Semmi másra nem reagál. A keresőmezőbe persze beírja amit írok, csak a lenyomáshoz (felemeléshez) kötött funkciókat nem hívja meg.

    Hogyan lehet ezt megoldani? Hátha ti már tapasztaltátok (és megoldottátok ezt).

    Aztán később van egy feltétel, ahol az Enter leütését vizsgálom:
    if (event.keyCode === 13) {}
    Nem tudom, abba is belerondít-e, odáig még "nem jutott el", de inkább már nem írok külön bejegyzést erről.

    Köszi!

    Can I Use szerint pedig mennie kellene... [link]

Új hozzászólás Aktív témák