Autor | Zpráva | ||
---|---|---|---|
polom Profil * |
#1 · Zasláno: 1. 9. 2010, 18:06:03
Jak vrátit správnou pozici kurzoru?
Mám tuto funkci: function getPos(e,type) { var event = e || window.event; if (event.type=="mousemove"){ Positions = { "clientX":(event.pageX || event.clientX), "clientY":(event.pageY || event.clientY), "screenX":(event.screenX ), "screenY":(event.screenY) } } else if (type) return Positions[type]; // vrátit požadovanou vlastnost } Kterou volám pomocí: getPos(e,"screenX") Do Positions.screenX a Positions.screenY chci ukládat pozici blikajícího kurzoru (tj. místo kde se nacházím když píšu text). Pozice myši s tím nesouvisí. Když napíši text, kliknu mimo vstupní prvek a kurzor zmizí. Informace jsou uložené a teď chci vytvořit tlačítko hned vedle místa, kde jsem psal. Problém je v tom, že ty souřadnice event.screenX a event.screenY jsou dost nepřesné, takže tlačítko se vytvoří někde jinde. (Jde o formulář s několika řadami a sloupci inputů, takže se tlačítko vytvoří na nesprávném místě a v nesprávném sloupci). Dík za radu |
||
polom Profil * |
#2 · Zasláno: 2. 9. 2010, 09:10:21
Tak kdyby to někoho zajímalo, nakonec jsem to udělal pomocí JQuery, kde je funkce offset. Jinak jsem to zkoušel pomocí offsetu v DOM a to nejde, protože offset IE a FF počítají každý jinak. V tom JQuery to jde krásně a přesně. Docela by mě zajímalo, jak by jste to řešily vy?
Moje řešení: function getObjPos(o,prop) { o=$(o).offset(); if (prop) return o[prop]; } |
||
Chamurappi Profil |
#3 · Zasláno: 2. 9. 2010, 09:22:37 · Upravil/a: Chamurappi
Reaguji na poloma:
„Docela by mě zajímalo, jak by jste to řešili vy?“ Tak, abych hledání pozice nepotřeboval. Pokud chci vyrobit tlačítko hned vedle textu, tak ho prostě dám do DOMu vedle textu a nebudu ho pozicovat. Zjišťování souřadnic elementu jsem potřeboval zatím jen k tomu, abych zjistil, jestli je ve viditelné ploše, k ničemu jinému. „Jinak jsem to zkoušel pomocí offsetu v DOM a to nejde, protože offset IE a FF počítají každý jinak.“ Jak jinak? Při vhodné stavbě CSS se jde rozdílům vyhnout. |
||
polom Profil * |
#4 · Zasláno: 2. 9. 2010, 10:13:48
Chamurappi:
„Tak, abych hledání pozice nepotřeboval. Pokud chci vyrobit tlačítko hned vedle textu, tak ho prostě dám do DOMu vedle textu a nebudu ho pozicovat.“ V mém případě se jedná o formulář kde je málo místa a proto jsem nechtěl tlačit nějakých 28 tlačítek někam, když stačí jedno, které se bude zobrazovat tam kde zrovna píšu. Mám to už hotové a funguje to perfektně. Tlačítko nezabírá skoro žádné místo, protože se vejde mezi dva sousedící inputy. html kód je taky výrazně kratší. |
||
Časová prodleva: 7 let
|
|||
Možná takto Profil * |
#5 · Zasláno: 10. 11. 2017, 13:34:21
<!DOCTYPE html> <html> <head> <title>Test</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> button { display: none; } </style> <script type="text/javascript"> var button; function focusIn(input) { if (button) { button.style.display = "none"; } button = document.getElementById(input.id + "_btn"); button.style.display = "inline"; } </script> </head> <body> <form> <input type="text" id="input1" onfocus="focusIn(this)"> <button type="button" id="input1_btn">Klik</button> <input type="text" id="input2" onfocus="focusIn(this)"> <button type="button" id="input2_btn">Klik</button> <input type="text" id="input3" onfocus="focusIn(this)"> <button type="button" id="input3_btn">Klik</button> </form> </body> </html> |
||
Časová prodleva: 5 let
|
0