ugrás a tartalomhoz

js event tovább küldése

takev · 2011. Feb. 7. (H), 13.35
Sziasztok!

Az alábbi problémát szeretném valahogy megoldani:

Van az oldalon egy objektum, pl textarea, amihez létrehozok egy vezérlő objektumot placeholder, méret, egyéb dolgok vezérlésére.

Ezzel megy is szépen, nincs is vele gond, ha mondjuk a lap betöltődésekor beállítom az objektumhoz. De ha mondjuk van 20 ilyen objektumom, amiből talán 1-2 -t használ a felhasználó, akkor nincs értelme az összeset beállítani, ezért arra gondoltam, hogy ha a focus rákerül, akkor rendelem csak össze őket.
Ez így néz ki:
<textarea onfocus="if(!this.hasControl) {new TextAreaController(this);}">text..</textarea>
A problémám ezzel az, hogy első kattintásra létrehozza hozzá az objektumot, de a létrehozott objektum nem kapja meg az eseményt (jelen esetben onfocus), és csak ha újra rákerül a fókusz, akkor fut le.

Hogyan tudnám átadni az event-et egy elegáns, általános megoldással úgy, hogy már az objektum létrehozása után átadja az objektumnak az eseményt?

Remélem érthetően írtam.
 
1

Ha kell neked ilyesmi akkor

rrd · 2011. Feb. 7. (H), 15.37
Ha kell neked ilyesmi akkor érdemes használni valamilyen js keretrendszert ahová eleve integrálják a megoldást. Nézz körül a prototype vagy a jquery háza táján.
2

valahogy így

bb0072 · 2011. Feb. 8. (K), 14.38
Vagy valahogy így
<textarea id="cntrl">text...</textarea>
A js pedig:

document.getElementById('cntrl').addEventListener('focus', function(e){
    
    new TextAreaController(this);
    //az e az event, a this a textarea
});
De tényleg érdemesebb jQuery-t használni, mert pl. ie-ben nem addEventListener-nek hívják a függvényt hanem attachEvent-nek, meg az e sem lesz jó ie-ben, mert annak meg window.event kell. Persze natív kóddal is meg lehet csinálni (képességérzékelés meg még 3 if ide-oda), de ha nem akarsz megőszülni, akkor jQuery :))
4

jquery

takev · 2011. Feb. 9. (Sze), 15.06
Már megoldottam a kérdéses textArea vezérlést jQuery-vel(írtam rá plugint), csak érdekelt, hogyan lehetne átadni az eseményt az újonnan létrejött objektumnak...
Alapvető problémám az volt, hogy legelőször a textarea kapta meg az eseményt, majd létrejött hozzá a vezérlő objektum, viszont annak már nem futott le a focus eseménye (lévén nem ő kapta). És csak valahogy el akartam küldeni neki is. Tehát az érdekelt, hogy hogyan lehet egy objektumra eseményt küldeni. Pl. hívófv(objektum, esemény);
De aztán annyira belebonyolódtam, hogy inkább megcsináltam jquery-vel :)
5

trigger, triggerHandler

Poetro · 2011. Feb. 9. (Sze), 16.32
3

A TextAreaController saját

Török Gábor · 2011. Feb. 8. (K), 17.56
A TextAreaController saját maga feliratkozik az onfocus eseményre?