- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Inserire tag in textarea dove è posizionato il cursore
-
Inserire tag in textarea dove è posizionato il cursore
Salve, ho un problemino... in pratica ho inserito un javascript che permette la formattazzione rapida di una textarea. Ad esempio per inserire uno smilie è un po' come su vbullettin che basta cliccare sullo smilie desiderato perchè il bbcode appaia a nella textarea... il problema è che il bbcode viene sempre inserito in fondo alla textarea mentre vorrei che venisse inserito dove si trova il cursore... come faccio?
Javascript:
function smile(smile) { document.sendpm.message.value += smile+" "; document.sendpm.message.focus(); }
<img src="img/smile/smile1.gif" onclick="smile('[:)]')">
-
Ciao max0005,
Questo dovrebbe fare al caso tuo:
<textarea id="testo"></textarea> <script type="text/javascript"> function insertTesto(nomeTextArea, aggiungi) { var idTextArea=document.getElementById(nomeTextArea); if(document.all) { idTextArea.focus(); var sel=document.selection; var rng=sel.createRange(); rng.colapse; rng.text=aggiungi; } else if(idTextArea.selectionEnd) { var lng=idTextArea.textLength; var from=idTextArea.selectionStart; var to=idTextArea.selectionEnd; idTextArea.value = idTextArea.value.substring(0,from)+aggiungi+idTextArea.value.substring(to,lng) } else idTextArea.value+=aggiungi; idTextArea.focus(); } </script> <img src="img/smile/smile1.gif" alt="lol" onclick="insertTesto('testo', '[:)]');">
-
Grazie thedarkita funziona! L'unica cosa quando clicco per inserire il cursore si "trasferisce" sull'ultima riga della textarea. Questo significa che se io ho come priga riga del messaggio una riga vuota e clicco per inserire fa apparire il bbcode sull'ultima riga però è una possibilià remota quindi nessun problema.
-
Prova cosi:
<script type="text/javascript"> function setCurPos(nomeTextArea, nuovaPosizioneSelezione) { selezione=document.getElementById(nomeTextArea); if (selezione.createTextRange) { var range = selezione.createTextRange(); range.collapse(true); range.moveEnd('character', nuovaPosizioneSelezione); range.moveStart('character', nuovaPosizioneSelezione); range.select(); } else if (selezione.setSelectionRange) { selezione.focus(); selezione.setSelectionRange(nuovaPosizioneSelezione, nuovaPosizioneSelezione); } } function insertTesto(nomeTextArea, aggiungi) { var idTextArea=document.getElementById(nomeTextArea); if(document.all) { idTextArea.focus(); var sel=document.selection; var rng=sel.createRange(); rng.colapse; rng.text=aggiungi; } else if(idTextArea.selectionEnd) { var lng=idTextArea.textLength; var from=idTextArea.selectionStart; var to=idTextArea.selectionEnd; idTextArea.value = idTextArea.value.substring(0,from)+aggiungi+idTextArea.value.substring(to,lng) } else idTextArea.value+=aggiungi; idTextArea.focus(); setCurPos(nomeTextArea, from); } </script>
-
Provato. Sembra che funzioni... non mi da più nessuno dei problemi(ni) che mi dava prima. Grazie!!!
-
Figurati.