Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][JavaScript] Zbieranie danych z inputa
Forum PHP.pl > Forum > Przedszkole
slawek3422
Witam wszystkich programistów.
Kilka godzin googlowania nie rozwiązało mojego problemu.

Mam następujący kod :
  1. <input type='text' name='inpucik' onchange="setTimeout('sprawdz_login()', 2000);">


No i wszystko fajnie działa tylko, że nie tak ja ja bym chciał. Powyższa funkcja sprawdz_login() wykonuje się po 2 sekundach, ale tylko wtedy jak input straci fokusa.
Ja chcę osiągnąć taki efekt, że user sobie wpisuje literki i jak np. skończy pisać (nowe znaki nie będą się pojawiały przez 1-2s) to wtedy ma się wywołać funkcja sprawdzająca poprawność wpisanych danych.
Oczywiście input cały czas ma fokusa i kursor sobie wewnątrz niego normalnie miga umożliwiając userowi wpisanie kolejnych znaków ...

Próbowałem zrobić to ze zdarzeniem onKeyPress, onKeyDown, onKeyUp ale wtedy po odczekaniu 2s funkcja wywoływała się tyle razy ile było znaków, a ja chcę żeby się wykonała raz. Jak user uzupełni dane i będzie przerwa we wpisywaniu to znowu ma się automatycznie wywołać itd.

Czy takie coś jest w ogóle wykonalne ?
kamil4u
Oczywiście, że jest, tylko jest z tym trochę zabawy , dlatego proponuję spr. login właśnie przy zdarzeniu onchange, ale bez tej zwłoki 2s - tak działa większość takich funkcji,

Jeżeli jednak chcesz zrobić tak jak myślisz musisz w zdarzeniu onKeyCoś (wybierz jakie Ci pasuje) spr co 2 s. czy value tego inputa zmieniło się od ostatniego spr, i jeśli nie to wykonać funkcję spr. loginu. Skorzystaj z funkcji setInterval, tylko nie zapomnij usunąć interwału po przez clearInterval.

Pozdrawiam
slawek3422
Myślałem, że JS ma w sobie zaimplementowane jakieś mechanizmy, których będę mógł w łatwy sposób użyć ... w takim układzie skorzystam ze zdarzenia onBlur ... Dzięki za odpowiedź
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.