Trigger kliknięć |
Wpisany przez Patryk yarpo Jar | |||
niedziela, 29 listopada 2009 17:47 | |||
Prawie każda strona www posiada dzisiaj formularze. Wiele z nich chce ładnie ostylować te formularze. Niestety, póki co nie wszystkie przeglądarki wspierają należycie takie właściwości css jak zaokrąglanie rogów itp. Dlatego często trzeba się wspierać dziwnymi sklejeniami grafiki (jeśli nie wiesz o co mi chodzi przeczytaj artykuł o sexy buttonach albo inny podobny o technice sliding doors).
Wizualnie wszystko działa ładnie. Niestety część wizualnego przycisku to nie jest przycisk, tylko jakiś inny pojemnik. Taki pojemnik, domyślnie nie powoduje żadnej akcji. Przycisk HTML (znacznik <input type="button|submit|reset"/>) najczęściej wywołuje jakąś akcję. Jeśli uważasz, że naprawdę musisz mieć "ładniejsze" formularze to może warto sprawić, by choć nie traciły na funkcjonalności?
Najpierw przykładowy kod, bardzo uproszczony:
W wyniku otrzymamy mniej - więcej coś takiego: Trochę powiększyłem screen, aby było lepiej widoczne co się stało. Obszar ograniczony niebieską linią to przycisk [typu submit]. Jeśli klikniemy na niego - formularz zostanie wysłany. Obszar ograniczony czerwoną linią to <span class="sexy-button"/>. Jeśli klikniemy na jego obszar to wcale nie wyśle formularza (chyba, że klikniemy na obszarze wspólnym z buttonem).
Czas na JavaScriptJedyne co musimy zrobić to wywołać kliknięcie na buttonie, jeśli klikniemy na span. Proste? Nie aż tak bardzo, jednak jQuery to ułatwnia w stopniu znacznym: Może cię zaciekawić, dlaczego wyłączamy propagację zdarzenia... Otóż, wg standardu W3C są dwie fazy propagacji zdarzeń: faza zstępowania i bąblowania (choć strasznie to brzmi po polsku). Jeśli nie wyłączymy tu propagacji to się nam zapętli. Gdyż nasz trigger będzie pośrednio wywoływał sam siebie! Pełny przykład:
|