Autor Zpráva
yngwie
Profil
Nazdar,

snažím sa v javascripte spraviť jednoduchý tabuľkový kalkulátor, všetko ako tak ide, ale problém mám s obsluhou onmousemove eventu. Celkovo problém spočíva v tom, že sa snažím vytvoriť podobnú funckcionalitu, čo sa navigácie v gride týka, ako má napríklad excel. Čiže po označení kokrétneho políčka tabuľky, ktoré obsahuje <input> tak chcem, aby bolo možné ťahaním myši označiť skupinu políčok a na ne potom aplikujem nejakú matematickú operáciu. Pôvodne som to chcel riešiť tak, že každá bunka gridu má nastavený handler na event onmousedown a onmouseup. V obsluhe onmousedown sa každému políčku pridá handler onmousemove a pri evente onmouseup sa políčkam event onmousemove odoberie, pri pohybe myšou sa v obsluhe onmousemove zachytáva súradnica poľa, nad ktorým sa aktuálne nachádza kurzor myši a zároveň je stlačené tlačítko myši. Po implementovaní mi to tak ako som si to predstavoval funguje iba v chrome, v ostatných prehliadačoch to požadovanú funkcionalitu vykoná iba občas po niekoľkých pokusoch. Neviem si s tým dať akosi radu a tak budem vďačný za každý konštruktívny nápad alebo radu, problém je taktiež aj v tom, že neni možné použiť nejakú knižnicu ako je napr. jQuery.
joe
Profil
Já bych to dělal asi tak, že si někam uložím tu položku, na kterou se poprvé klikno a pokud je tlačítko stále stisknuté, pak v onmousemove kontroloval cílový element (target), tedy ten, nad kterým je zrovna myš. Pak už mám dvě buňky a podle toho jde dopočítat, které všechny mají být vybrané.
yngwie
Profil
Dík za radu, je to v podstate ten istý princíp ako som si zvolil ja, ale vravím problém je v tom, že onmousemove nie vždy zareaguje a preto som sa s tým obrátil sem. Ja na onmousedown uložím id poľa na ktoré bolo kliknuté a potom testujem, či je myš stlačená ak je tak by sa v onmousemove mala prepisovať hodnota konečného poľa oblasti, ktorú chcem vybrať, ale problém je, že do on mousemove obsluhy to skočí iba niekedy, skúšal som si tam dať do každej obsluhy alert a vtedy sa to správalo ako malo, ale inak mi príde ako by ten onmouse nestohol prebehnúť a je hneď zavolaný znovu.....no a na onmouseup sa onmousemove odstráni z buniek, aby to neprepočítaval aj pri nestalačenej myši....neviem fakt sa to chová divne.
joe
Profil
Nevím jaký je rozdíl v chování, ale rozdíl v tom co píšeš ty a já je, že ty dáváš onmousemove na každou buňku, ale já bych ho dal jen na rodičovský element.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0