salve a tutti.
tramite questa applicazione js permetto l'utente di formattare il testo con i prompt e nella textarea nella posizione del cursore uscirà il testo formatato racchiuso nei tag.
codice:
<script type="text/javascript">
<!--
function AddToTextarea(TextareaID,TextToAdd,Titolo,TypeText){
if(TypeText !=""){
var L = prompt(Titolo,"");
if(TypeText != "link"){
if (L) {
TextToAdd = '<' + TypeText + '>' + L + '</' + TypeText + '>';
}
}
else{
var M = prompt("Inserisci il link","http://");
if(L){
TextToAdd= '' + L + '';
}
elseif(L != ""){
TexToAdd= '' + M + '';
}
}
}
var MyTextarea = document.getElementById(TextareaID);
if (document.all)
{
MyTextarea.focus();
var MyRange = document.selection.createRange();
MyRange.colapse;
MyRange.text = TextToAdd;
}
else if (MyTextarea.selectionEnd){
var MyLength = MyTextarea.textLength;
var StartSelection = MyTextarea.selectionStart;
var EndSelection = MyTextarea.selectionEnd;
MyTextarea.value = MyTextarea.value.substring(0, StartSelection) + TextToAdd + MyTextarea.value.substring(EndSelection, MyLength);
}
else{
MyTextarea.value += TextToAdd;
}
}
</script>
il problema è se il cursore si ritrova all'interno del tag.
esempio:
in [/b] e io ci inserisco qualcosa per sbaglio mi distrugge il tag con ovvie conseguenze. in questo caso grassetto a tutto spiano.
ora avevo pensato di agire nel javascript ma nn serve perchè un utente esperto può anche scrivere a mano i tag e comunque se il cursore si trova all'interno inavvertitamente lo si può rovinare.
pensavo di affidarmi a php per controllare che i tag siano intanti e cancellare le cose sbagliate
io avevo pensato di fare un preg match di questo tipo
se nel testo trovi per esempio uno strong con caratteri aggiuntivi o addirittura eliminati mi sostituisca il tag in modo corretto.
come la si può scrivere o ho detto una cosa che non si può proprio fare.comunque ci sono approcci più semplici?