Javascript események sorrendje
A következő dologban kérném a segítségeteket:
Adott egy autocomplet szerű beviteli input mező és a hozzátartozó suggest adatok divben azt szeretném, hogy amikor az input mező elveszti a focust (blur) akkor az eredménymező törlődjön a DOM –ból amikor pedig az eredmény mezőre kattintok jelenjen meg az input mezőre (onclick). A két művelet egyenként jól működik, de amikor a blur esemény és az onclick egyszerre van felcsatolva, akkor a blur esemény mindig előbb lefut, így az onclick már nem fut le. A kérdés, hogy tudom a blur eseménynek, feltételt adni, hogy csak akkor fusson le amikor a fokuszt elveszti az input mező, és nem az suggest mezőre kattintanak.
Az implementálás jQuery használatával történt.
■ Adott egy autocomplet szerű beviteli input mező és a hozzátartozó suggest adatok divben azt szeretném, hogy amikor az input mező elveszti a focust (blur) akkor az eredménymező törlődjön a DOM –ból amikor pedig az eredmény mezőre kattintok jelenjen meg az input mezőre (onclick). A két művelet egyenként jól működik, de amikor a blur esemény és az onclick egyszerre van felcsatolva, akkor a blur esemény mindig előbb lefut, így az onclick már nem fut le. A kérdés, hogy tudom a blur eseménynek, feltételt adni, hogy csak akkor fusson le amikor a fokuszt elveszti az input mező, és nem az suggest mezőre kattintanak.
Az implementálás jQuery használatával történt.
nem értem
Esenények
$($this).blur(function(event)
{
$.fn.fieldIO.bluring($this);
})
Az ajánlások egy div mezőben vannak <li> tagok között amelynek CSS osztálya .result_odd és .result_even. A clickResult() függvény a clickelt elemet beteszi a az input mezőbe és eltávolítja a result div-et.
$('.result_odd,.result_even').click(function($this)
{
$.fn.fieldIO.clickResult( $this);
}
);
Amikor mind két event handler fel van kapcsolva, akkor egy .result_odd vagy .result_even css osztályú elemre kattintásnál is, generálodik egy blur esemény mert a windows-ra átmegy a focus. A bluring() lefut és eltávolítja a result divet a tartalmával együtt. a második eseménykezelő már nem fut le mert a bluring eltávolította, amin dolgozhatna.
Sajnos járatlan vagyok még az JavaScriptben és az eseménykezelőkben, látom, hogy nem jó a kód de sajna nem tudom a helyes megoldást. A fenti megoldás biztos nem jó!
Timeout
Valami ilyesmire gondolok:
Timeout OK!!!
Most már működik csak a késleltetést kellet megemelni 1000-re.
értem már
Focus
van onblur a divnél is, de
Ok
Én a SUN Client-Side JavaScript Guide dokumentumát néztem abból indultam ki. :-)
Gecko
https://developer.mozilla.org/En/DOM/Element.onBlur