ciao a tutti,
sto utilizzando lo script (utilissimo!) che riporto sotto per implementare un mini editor, quando mi sono accorto di uno strano problema.
Seleziono ad es. una parola > inserisco il tag desiderato > riseleziono solo la parola stessa per inserire altri tags (quindi annidandoli) > il codice mi viene stampato al di fuori della textarea.
Ho provato a smanettare sul codice ma le mie conoscenze di javascript sono alquanto limitate. :-(
Mi confermate anche voi questo problema e magari come risolverlo?
Grazie a tutti in anticipo
---
<script language="javascript">
<!--
function storeCaret ()
{
if (document.forms[0].elements[0].createTextRange)
document.forms[0].elements[0].caretPos = document.selection.createRange().duplicate();
}
function insertAtCaret (text)
{
if (document.forms[0].elements[0].createTextRange && document.forms[0].elements[0].caretPos) {
var caretPos = document.forms[0].elements[0].caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
}
else
document.forms[0].elements[0].value = text;
}
function seltext()
{
if (document.getSelection)
{
var str = document.getSelection();
}
else if (document.selection && document.selection.createRange)
{
var range = document.selection.createRange();
var str = range.text;
}
else
{
var str = "";
}
return str;
}
function docmd(comm){
switch (comm) {
case "ACapo":
if (seltext()=="")
insertAtCaret("
\n");
break;
case "Titolo" :
if (seltext()=="")
insertAtCaret(" <div class='titolo'> </div>\n");
else
insertAtCaret(" <div class='titolo'> " + seltext() + " </div>\n")
break;
case "STitolo" :
if (seltext()=="")
insertAtCaret(" <div class='sottotitolo'> </div>\n");
else
insertAtCaret(" <div class='sottotitolo'> " + seltext() + " </div>\n")
break;
case "Grass" :
/*if (seltext()!="")*/
insertAtCaret("" + seltext() + " ");
break;
case "Link" :
if (seltext()!="") {
value=prompt("Inserisci l'indirizzo di destinazione completo di http:// nella casella sottostante","");
insertAtCaret(" " + seltext() + " ");}
break;
case "Link2" :
if (seltext()!="") {
value=prompt("Inserisci l'indirizzo di destinazione completo di http:// nella casella sottostante","");
insertAtCaret(" [img]img/bull.gif[/img] " + seltext() + " ");}
break;
case "Immagine" :
if (seltext()=="")
insertAtCaret(" <img> ");
break;
default :
break;
}
}
//-->
</script>
<textarea onselect="storeCaret();" onclick="storeCaret();" onkeyup="storeCaret();"></textarea>

Rispondi quotando