Autor Zpráva
Rox Cox
Profil
Čůs. Potřeboval bych vědět jak označit pouze vybraný text tagem (jako třeba tady na fóru). Používám...

<input name="b" type="button" onclick="text.value+[b][/b]">
<textarea name="text"></textarea>


...ale to návštěvníky docela otravuje.
fajzen
Profil
<input name="b" type="button" onclick="AtF('b','text');">
<textarea name="text" id="text"></textarea>



JavaScript:

function AtF(tag, kam)
{
  try { // IE
    var vyber = document.selection.createRange().text;
    document.selection.createRange().text = "[" + tag + "]" + vyber + "[/" + tag + "]";
  }
  catch(e) {
    try { // FF
      mozWrap(document.getElementById(kam), "[" + tag + "]", "[/" + tag + "]");
    }
    catch(e) { // inak klasicky
      document.getElementById(kam).value+= "[" + tag + "][/" + tag + "]";
    }
  }
}

function spol_mozWrap(txtarea, lft, rgt)
{
  var selLength = txtarea.textLength;
  var selStart = txtarea.selectionStart;
  var selEnd = txtarea.selectionEnd;

  if (selEnd==1 || selEnd==2)
    selEnd=selLength;

  var s1 = (txtarea.value).substring(0,selStart);
  var s2 = (txtarea.value).substring(selStart, selEnd)
  var s3 = (txtarea.value).substring(selEnd, selLength);
  txtarea.value = s1 + lft + s2 + rgt + s3;
}
Rox Cox
Profil
Funguje to skvěle. Šlo by to ještě nějak pro FF a Chrome?
Rox Cox
Profil
Teď jsem objevil zvláštní věc. Když se neoznačí žádný text, tak se tag nezapíše.
fajzen
Profil
trochu som to upravil, funguje to v FF, Opere, IE6
Chrome som netestoval

v IE nefunguje to, že ak niečo napíšeš, potom klikneš niekam dostredu toho textu, ale nič neoznačíš, aby to ten tag hodilo na pozíciu kurzoru, takže do stredu toho textu... v Opere aj FF to ide, v IE sa mi to nepodarilo rozbehať, v ňom sa tag hodí na koniec nextu

JavaScript:
function AtF(tag, kam)
{
  try { // IE
    var vyber= document.selection.createRange();
    if(vyber.parentElement().id == kam)
      document.selection.createRange().text = "[" + tag + "]" + vyber.text + "[/" + tag + "]";
    else
      document.getElementById(kam).value+= "[" + tag + "][/" + tag + "]";
  }
  catch(e) {
    try { // FF
      mozWrap(document.getElementById(kam), "[" + tag + "]", "[/" + tag + "]");
    }
    catch(e) { // inak klasicky
      document.getElementById(kam).value+= "[" + tag + "][/" + tag + "]";
    }
  }
}

function mozWrap(txtarea, lft, rgt)
{
  var selLength = txtarea.textLength;
  var selStart = txtarea.selectionStart;
  var selEnd = txtarea.selectionEnd;

  if (selEnd==1 || selEnd==2)
    selEnd=selLength;

  var s1 = (txtarea.value).substring(0,selStart);
  var s2 = (txtarea.value).substring(selStart, selEnd)
  var s3 = (txtarea.value).substring(selEnd, selLength);
  txtarea.value = s1 + lft + s2 + rgt + s3;
}
Rox Cox
Profil
Tak teď už je to úplně perfektní. Díky moc!!!

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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