Autor Zpráva
Sylar
Profil
Zdravím,
potřeboval bych pomoct se scriptem zjištujicí pozici kurzoru v textaree. Měl by vkládat před a za vybranou část textarey tag.

function insertTag(textareaID, before, after, KeepSelection) {
  var ta = document.getElementById(textareaID);
  ta.focus();
  if(!(document.selection.createRange)&&(ta.selectionStart)&&(ta.selecti onEnd)) {//Mozilla
    ss = ta.selectionStart;
    se = ta.selectionEnd;
    xt = ta.value;
    out = xt.substring(0, ss)+before;
    if(KeepSelection) out += xt.substring(ss, se);
    out += after+xt.substring(se, xt.length);
    ta.value = out;
  } else if(document.selection&&document.selection.createRange) { //MSIE
    r = document.selection.createRange();
    if(r.text != '') {
      out = before;
      if(KeepSelection) {
        out += r.text;
      }
      out += after;
      r.text = out;
    } else {
      ta.value += before+after;
    }
  } else {
      ta.value += before+after;
    }
  ta.focus();
}


Našel jsem toto, ale nefunguje mi to :(

V html mám pak toto:
<a href="#" onclick="insertTag('text','[h]','[/h]'); return false;" title="Head">[h][/h]</a>


Ještě by tam někam měla přijít tato část, která tu fci zajištuje v IEs ale nejsem si jistej kam ...
    var range = document.selection.createRange();
    var len = range.text.length;
    range.moveStart('textedit', -1);
    var selectionStart = range.text.length - len;


V podstatně bych potřeboval udělat to samé jako je tady na foru. Když je vybrán kus textu obalit ho tagy, poukd není vložit na místo kurzoru oba dva tagy zároveň.
Str4wberry
Profil
Potřebuješ-li „to samé jako je tady na foru“, tak si to zkopíruj.
Sylar
Profil
Str4wberry
Už jsem na to koukal, ale potřebuji to pro komerční projekt :(
peta
Profil
http://www.volny.cz/peter.mlich/x/textarea2.html
'potřebuji to pro komerční projekt'
Tady na foru je to volne siritelny kod, cos tim chtel jako rici?
Chamurappi
Profil
Reaguji na Sylara:
Skript pro komerční projekt se nějak liší od skriptu pro nekomerční?

Reaguji na peta:
Když se na tvoji ukázku podívám v Exploreru, neoznačím v <textarea> žádný text a jen klikám na „úsměv“, vyrábím tím hodně vysmáté tlačítko.
Sylar
Profil
peta
No nééééé to je paráda :-) ... jen v IE6 a 7 to blbne když není vybranej žádnej text .. to by ale mělo odstranit tohle ...

var range = document.selection.createRange();
    var len = range.text.length;
    range.moveStart('textedit', -1);
    var selectionStart = range.text.length - len;


viz ... Odkaz
Sylar
Profil
Chamurappi
Ne-e :-) to určitě neliší, problém je ale s licencí miniBB fora. Koukal jsem na ní a pro komerční účely se používat free verze nesmí tj ani její části
peta
Profil
Sylar
forum ne, ale casti scriptu a navic tak bezne se pouzivat muzou.
Chamurappi
Mne to chodilo v obou prohlizecich. A nedal jsi lepsi, tak nekritizuj :)
Parada, mas pravdu, kdyz neni nic vybrane :) Spatne nastaveny focus, mozna kurzor, jak pise Sylar
Str4wberry
Profil
Teď mi došlo, že autorem zdejšího skriptu je zdejší kolega Jan Tvrdík, můžeš se s ním zkusit domluvit.
peta
Profil
Sylar
var oznaceni = document.selection.createRange();
text_stred = text_pred + text_stred + text_za;
textarea.focus();
za
text_stred = text_pred + text_stred + text_za;
textarea.focus();
var oznaceni = document.selection.createRange();
Cely problem je v tom, ze je focus na tlacitku a je treba jej presunout na textarea a tam provest createRange. Explorer to ma trosku zmatene, mam pocit, ze select bere jen z document a uz ne primo z textarea a zjistuje si, kde je aktualne kurzor (takove klasicke MS zjednoduseni vedouci ke komplikacim).
Sylar
Profil
peta
okok super paráda :-) díky moc, moc si mi pomohl

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0