Duda Javascript con el evento Onselect

Fr4nk0

La pregunta es, cuando en un textarea le pongo el evento onselect (para que salte cuando seleccione un trozo de texto) , como puedo saber cual es el trozo de texto que esta seleccionado?

Hace varios años ya, me acuerdo que hice que cuando se seleccionara un texto en un textarea, me copiara ese mismo texto a otro textarea, pero ahora no me acuerdo y no se como es.

Thanks por vuestra ayuda

NeB1

document.getSelection() creo que vale, y tmb algo como document.selection.noseke

Fr4nk0

Segun he leído eso solo rula en netscape. Y con el select no he encontrado nada, y se que es facil pq lo hice hace tiempo :(

NeB1

#3 que solo rula en netscape??eso que has leido debe ser antiguo, aunque bueno, mañana lo pruebo de todas formas. sorry es q no conozco más metodos

Fr4nk0

Eso he leido, ademas lo probe y no va. Pongo alert para ver que coge y me sale vacio (cuando sale el alert, pq cuando esa funcion no existe no sale nada, y creo que el select me salio con window.getSelected() o getSelection() no me acuerdo bien cual funciono, y no con document).

Si lo miras ya me cuentas NeB1. En realidad ya es por coraje de sacarlo porque sé que se puede y que lo hice, pq ya no me hace falta pero tu sabes, el orgullo... jajaja

NeB1

#5 tienes razón, solo consigo que vaya esto en IE:

<html> 
 <head> 
  <a name="#1"> 
  <script language="JavaScript"> 
   function sele() { 
    a=document.selection.createRange(); 
    alert("Tipo de selección: " + document.selection.type + "\nTexto seleccionado: " + a.text); 
   } 
  </script> 
 </head> 
 <body> 
  <form name="frm"> 
   <table border="0"> 
    <tr> 
     <td align="right"> 
      input: 
     </td> 
     <td> 
      <input type="textInput" name="txt"> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      textarea: 
     </td> 
     <td> 
      <textarea name="txtArea"></textarea> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      Link: 
     </td> 
     <td> 
      <a href="#1">Enlace</a> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      Select: 
     </td> 
     <td> 
      <select> 
       <option>Uno</option> 
       <option>Dos</option> 
       <option>Tres</option> 
      </select> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      Párrafo: 
     </td> 
     <td> 
      Esto es un párrafo de donde también se puede seleccionar texto. 
     </td> 
    </tr> 
    <tr> 
     <td align="center" colspan="2"> 
      <a href=javascript:sele()>Ver texto seleccionado</a>  
</td> </tr> </form> </body> </html>
NeB1

aquí lo tienes explicado

Fr4nk0

NeB1 este código funciona tanto en firefox como en IE, y lo que hace es copiar el texto seleccionado en un textarea al otro textarea (haciendo uso del evento onSelect. Tb podría usarse poniendo un botón para que copiara lo seleccionado, pero ya habría que tocar más). En fin, esta forma no era la que yo había hecho hace tiempo (tambien en Firefox), pero funciona.

NeB1 lo de document.getSelection() funciona cuando el texto copiado no esta dentro de ningun textarea ni ningun input. Pero si esta dentro la unica forma es pasarle el objeto, y hacer lo que hago a continuacion.

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<script type='text/javascript'>
function copiatexto(area){

if (area.createTextRange) { // IE 
  var r = document.selection.createRange(); 
  var sel = r.text; 
  
} else if (area.setSelectionRange) { // Firefox // Posicion inicial en el string del texto seleccionado var ini = area.selectionStart; // Posicion final en el string del texto seleccionado var fin = area.selectionEnd; // Obtengo el substring var sel = area.value.substring(ini, fin); } if (area.id == "text1"){ document.getElementById("text2").value=sel; } else{ document.getElementById("text1").value = sel; } } </script> </head> <body> <textarea id='text1' rows='10' cols='20' onselect='copiatexto(this);' >Texto en el textarea 1</textarea> <textarea id='text2' rows='10' cols='20' onselect='copiatexto(this);' >Texto en el textarea 2</textarea> </body> </html>
NeB1

gracias por postear la solución tenía curiosidad

Usuarios habituales

  • NeB1
  • Fr4nk0