Newsgroup: it.comp.lang.javascript
Titolo: Scrivere in una textarea con click su bottone

Un saluto a tutti. Avrei bisogno di un consiglio per realizzare una cosa che 
credo possibile ma non essendo pratico di Javascript non so fare da solo.
In una pagina ho una textarea contenente già un testo ed alcuni bottoni. Ho 
la necessità di posizionarmi in un punto della textarea e cliccando su uno 
dei bottoni di scrivere nel punto prescelto della textarea un determinato 
testo diverso per ogni bottone su cui sceglierò di cliccare. Avevo trovato 
una soluzione in rete che sfruttava la clipboard ma non funziona con Firefox 
e IE7. Avete qualche consiglio?? Grazie 

Maicol ha scritto:

prova guardare questo codice che avevo fatto per prova un pò di tempo fa
se può esserti di aiuto
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
<meta name="generator" content="HTML Tidy, see 
www.w3.org
" />
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content=
"text/html; charset=iso-8859-1" />
</head>
<body>
<script type="text/javascript">
var noOverwrite=false;
var alertText;
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var is_gecko = ((clientPC.indexOf('gecko')!=-1) &&
(clientPC.indexOf('spoofer')==-1)
                && (clientPC.indexOf('khtml') == -1) &&
(clientPC.indexOf('netscape/7.0')==-1));
var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) &&
(clientPC.indexOf('spoofer')==-1));
function insert_tag(tagOpen, tagClose, sampleText) {
 var txtarea = document.forms[0].my_txtarea;
 alert (txtarea);
 // IE
 if(document.selection  && !is_gecko) {
  var theSelection = document.selection.createRange().text;
  if(!theSelection) { theSelection=sampleText;}
  txtarea.focus();
  if(theSelection.charAt(theSelection.length - 1) == " "){
// exclude ending space char, if any
   theSelection = theSelection.substring(0, theSelection.length - 1);
   document.selection.createRange().text =
tagOpen + theSelection + tagClose + " ";
  } else {
   document.selection.createRange().text =
tagOpen + theSelection + tagClose;
  }
 // Mozilla
 } else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
   var startPos = txtarea.selectionStart;
  var endPos = txtarea.selectionEnd;
  var scrollTop=txtarea.scrollTop;
  var myText = (txtarea.value).substring(startPos, endPos);
  if(!myText) { myText=sampleText;}
  if(myText.charAt(myText.length - 1) == " "){ // exclude ending space 
char, if any
   subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose +
" ";
  } else {
   subst = tagOpen + myText + tagClose;
  }
  txtarea.value = txtarea.value.substring(0, startPos) + subst +
    txtarea.value.substring(endPos, txtarea.value.length);
  txtarea.focus();
  var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
  txtarea.selectionStart=cPos;
  txtarea.selectionEnd=cPos;
  txtarea.scrollTop=scrollTop;
 // All others
 } else {
  var copy_alertText=alertText;
  var re1=new RegExp("\\$1","g");
  var re2=new RegExp("\\$2","g");
  copy_alertText=copy_alertText.replace(re1,sampleText);
  copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose);
  var text;
  if (sampleText) {
   text=prompt(copy_alertText);
  } else {
   text="";
  }
  if(!text) { text=sampleText;}
  text=tagOpen+text+tagClose;
  document.infoform.infobox.value=text;
  // in Safari this causes scrolling
  if(!is_safari) {
   txtarea.focus();
  }
  noOverwrite=true;
 }
 // reposition cursor if possible
 if (txtarea.createTextRange) txtarea.caretPos =
document.selection.createRange().duplicate();
}
/*function prova()
{
var oRange = oTextbox.createTextRange();
                oRange.moveStart("character", iStart);
                oRange.moveEnd("character", -oTextbox.value.length +
iEnd);     
                oRange.select();
}*/
function evidenzia_parte_campo(campo, iStart /*:int*/, iLength /*:int*/) {
alert (campo);
  //use text ranges for Internet Explorer
  if (campo.createTextRange) {
  var oRange = campo.createTextRange();
  oRange.moveStart("character", iStart);
  oRange.moveEnd("character", iLength - campo.value.length);
  oRange.select();
  }
 
  //use setSelectionRange() for Mozilla
  if (campo.setSelectionRange) {
  alert (iStart+' ' +iLength);
  campo.setSelectionRange(iStart, iLength);
  campo.focus();
  } 
}
</script>
<form><textarea name="my_txtarea" rows="10" cols="55"></textarea>
<input type="text" name="testo_prova" id="testo_prova" value=
"ciao ciao aooo mare" size="20" onkeyup=
"setTimeout('alert(100)',1000);" /> <input type="button" value=
"primo" name="aaa" id="aaa" onclick=
"insert_tag( '&lt;a&gt;', '&lt;/a&gt;', 'Ciao' )" /> <input type=
"button" value="secondo" name="bbb" id="bbb" onclick=
"evidenzia_parte_campo(document.getElementById('testo_prova'),5,6);"
/></form>
</body>
</html>
ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Grazie , lo provo subito. 

interpretare.