Autor | Zpráva | ||
---|---|---|---|
Palidi Profil |
#1 · Zasláno: 14. 12. 2004, 00:30:08 · Upravil/a: Palidi
Mám takovéto zadání :
- je textarea (určena pro psaní zpráv) - je sada tlačítek které vkládají např. smajlíky (při psaní jsou textové, při zobrazení se nahradí obrázkem) volají se javascriptem a jako parametr je text který se má vložit - funkce musí vložit text na pozici kurzoru. Pak musí nastavit kurzor za vložený text - pokud textarea nemá focus tak ho po vložení bude mít - pokud už textarea měla nastavený kurzor na nějaké konkrétní pozici ale ztratila focus tak tlačítko vloží text na bývalou pozici kurzoru a nastaví kurzor za vložený text - vše musí pracovat stejně v IE, Firefoxu a Opeře Jinými slovy chci dosáhnout toho aby uživateli nikam kurzor neskákal a psal kde naposledy přestal i když se třeba vrátil do prostředka textu. Kód který jsem zatím stvořil vypadá takto : definice textarey html
definice funkcí v javascriptu
funkce sm je volána pro vložení textu. Funkce cc je tam z důvodu uložení aktuální pozice pro IE. Teď co mám za problémy : Ve Firefoxu žádné - vše chodí přesně jak má. V IE je problém při ztrátě focusu. Text se sice vkládá na pozici kde má, ale kurzor se po vložení textu (a nastavení focusu) zobrazí na první pozici textarey. Dovedu si představit jak ho dám na konec textu : k value přičtu prázdný řetězec. Ale nedokázal jsem vyzkoumat jak ho nastavit přesně za vložený text. V Opeře jak jsem se dočetl není žádná podpora pro vkládání někam doprostřed textu. Takže otázky zní nevíte někdo jak v IE nastavit pozici kurzoru za vložený text a jak celou záležitost pojmout v opeře ? Myslím že by se nějaké definitivní řešení hodilo více lidem - tady to taky vkládá vše na konec textu. Když je ten text dlouhý tak je to docela pruda. |
||
Fred Profil |
#2 · Zasláno: 14. 12. 2004, 01:28:50
Jednou jsem někde našel tohle, nemůžu najít původní zdroj, funguje to v IE a v mozille, úplně to nesouvisí, ale řekl bych, že je to třeba pomůže, jestli ne sorry. Vypíše to posici kursoru
<html> <head> <title></title> <script type="text/javascript"> <!-- var pos; var begin; var end; var isSel; function checkCursor(where) { isSel=0; begin=0; if (document.selection) { where.focus(); sel = document.selection.createRange(); if(sel.text==""){ sel.text='žžž'; dummy = where.createTextRange(); dummy.findText('žžž'); dummy.select(); pos=where.value.indexOf('žžž'); begin=pos; document.selection.clear(); document.getElementById('posi').innerHTML='Cursor position: '+(pos+1); where.focus(); } if(sel.text!=""){ isSel=1; sel2=sel.text; len=sel.text.length sel.text='žžž'+sel.text; dummy = where.createTextRange(); dummy.findText('žžž'); dummy.select(); dummy.scrollIntoView(); pos=where.value.indexOf('žžž'); document.selection.clear(); if((pos+1)==(pos+len)){ document.getElementById('posi').innerHTML='Selection at position : '+(pos+1); } else{ document.getElementById('posi').innerHTML='Selection from position : '+(pos+1)+' to '+ (pos+len); } dummy.findText(sel2); dummy.select(); where.focus(); } } else if (where.selectionStart || where.selectionStart == '0') {//Moz begin = where.selectionStart; pos=begin; end = where.selectionEnd; if(end==begin){ document.getElementById('posi').innerHTML='Cursor position: '+(begin+1); where.focus(); where.selectionStart=end; } if(end!=begin){ isSel=1; if(end==begin+1){ document.getElementById('posi').innerHTML='Selection at position : '+(begin+1); } else{ document.getElementById('posi').innerHTML='Selection from position : '+(begin+1)+' to '+ end; } where.focus(); where.selectionStart=begin; where.selectionEnd=end; } } } //--> </script> </head> <body> <form name=frm> <input name="txt" value="abcdefgdefghijklmno" onclick="checkCursor(this);" onkeyup="checkCursor(this);" onfocus="setSelectionRange(0,0)"><br> </form> <span id="posi"></span><br> </body> </html> |
||
Časová prodleva: 3 měsíce
|
|||
Anonymní Profil * |
#3 · Zasláno: 13. 3. 2005, 14:18:06
fggdgsg
|
||
Časová prodleva: 5 měsíců
|
|||
pa3k Profil * |
#4 · Zasláno: 1. 8. 2005, 14:26:16
http://www.alexking.org/blog/2003/06/02/inserting-at-the-cursor-using- javascript/
nutne v zverejnenom zdrojaku opravit apostrofy, dnes som na to upozornil, mozno to opravia. |
||
peta Profil * |
#5 · Zasláno: 1. 8. 2005, 19:20:27
Pri Fredove scriptu mne napada...
vepsat tam cely text znova. Neukladat pozici, ulozit text. |
||
Spike Profil |
#6 · Zasláno: 2. 8. 2005, 16:19:20
kód jsem napsal do tématu s názvem:
<a href="javascript:"vloz do textarea neco |
||
Časová prodleva: 17 dní
|
|||
sadsad Profil * |
#7 · Zasláno: 19. 8. 2005, 15:02:24
[img][/img][img]aaa[/img] sda dsa
|
||
sadsad Profil * |
#8 · Zasláno: 19. 8. 2005, 15:03:38
![]() |
||
Časová prodleva: 8 měsíců
|
|||
Anonymní Profil * |
#9 · Zasláno: 4. 4. 2006, 13:34:12
![]() |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0