-
Taggare Selezione con JS
Mi chiedevo come fosse possibile aggiungere dei tag a quello che seleziono in una textarea!
Codice HTML:
<script type="text/javascript">
function tagga(selezione) {
document.form.codice.value=document.form.codice.select()+ '<b>'+selezione+'</b>';
}
</script>
<input type="button" onclick="tagga(document.form.codice.select())" />
<form name="form">
<textarea name="codice"></textarea>
</form>
Ho provato con qualcosa del genere ma non ci arrivo da solo :lol:
Potete aiutartmi?
-
Ecco qui l'ho provato è funziona su firefox
Codice:
function sel()
{
obj=document.getElementById('codice');
if(obj.selectionEnd)
{
var from=obj.selectionStart;
var to=obj.selectionEnd;
var selText=obj.value.substring(from,to);
}
var txt = obj.value+'';
txt = txt.replace(selText, '<b>'+selText+'</b>');
obj.value = txt;
}
</script>
<input type="button" onclick="sel()" value="selezionato" />
<form name="form">
<textarea id="codice"></textarea>
</form>
le info le ho trovate qui
questo invece funziona con IE
Codice:
function ie()
{
var obj = document.getElementById('codice');
var txt = '';
if (window.getSelection)
{
txt = window.getSelection();
}
else if (document.getSelection)
{
txt = document.getSelection();
}
else if (document.selection)
{
txt = document.selection.createRange().text;
}
else return;
var txte = obj.value+'';
txte = txte.replace(txt, '<b>'+txt+'</b>');
obj.value = txte;
}
Resta però il problema che se si selezionano pochi caratteri con il replace potrebbe sostituire una parte diversa(se trova una sottostringa identica prima di quella selezionata).
Con firefox puoi utilizzare le variabili from e to ma con IE...non saprei!!!
-
Ho provato lo script per firefox, ma la selezione non viene taggata ma vengono aggiunti solo <b></b>testo(quello che seleziono)!
Provo a correggere l'errore!
P.s. niente,comunque funziona anche se non è selezionato nulla...
-
A me mette altro<b>testoSel</b>altro...non saprei dirti come mai ti fa così!!!
Per quando non è selezionato nulla basta mettere un if (selText.length > 0) {...}
-
Insisto ti dico che non funziona! (<b></b>testo)