Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zdarzenie focus w polach formularza i przechwycenie zaznaczonego pola.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
czarek1986
Witam

Chciałbym osiągnąć następujący efekt:

Mam formularz z ilomaś polami input i textarea. Chce tak zadeklarować obsługę zdarzenia onfocus dla tych pól w javascript aby deklarowało się to przy wczytaniu strony. Następnie po kliknięciu w dowolne z tych pól ma się wykonywać zadeklarowana wcześniej funkcja która sprawdzi jakie pole zostało kliknięte i zapisze to do oddzielnej zmiennej. Następnie będzie można wykonać jakieś operacje na tej zmiennej co sprawi, że będą one wykonywane zawsze na aktywowanym polu np. zmiana tła itp. Nie chce robić tego poprzez zadeklarowanie zdarzenia w tagach html, gdyż formularz może się zmieniać dynamicznie i sprawiało by to problemy. Wole aby takie przypisanie zdarzenia do każdego pola input i textarea robiło się automatycznie. Robiłęmt o już w jQuery i działało poprawnie ale w czystym js mi to kompletnie nie wychodzi. Czy może ktoś mi z tym pomóc, bo szukam w google juz drugi dzien i nic nie mogę znaleźć dokładnie pasującego do mojego problemu.


Kod w jQuery wyglądał tak:


  1.  
  2. $(document).ready(function() {
  3.     $("input[type='text']").focus(function() {setFocus(this);});
  4.     $("textarea").focus(function() {setFocus(this);});
  5. });
  6.  
  7.  
  8. function setFocus(input) {
  9.     focus = input;
  10. }
  11.  
kamil4u
a ) document.getElementsByTagName - po inputach i textarea
b ) robisz pętlę po tych elementach
c ) spr. w pętli czy: input.type == 'text'
d ) w pętli po tych elementach zapisujesz:
Kod
element.onfous = function(){ TwojaFunkcja(this); };


i powinno chodzić smile.gif

PS. Pętlę możesz zrobić w taki trochę inny sposób:
Kod
for(var tablica = document.getElementsByTagName('input'), i=0, e; e=tablica[i++];){
alert(e); //zmienna e zawiera już referencję do konkretnego elementu :)
}
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.