Foros del Web » Programando para Internet » Javascript »

Posición cursor

Estas en el tema de Posición cursor en el foro de Javascript en Foros del Web. Hola, en primer lugar felicitarles por el foro y la web que están llevando. Muchos de mis problemas los he logrado solucionar recurriendo aqui. Es ...
  #1 (permalink)  
Antiguo 09/07/2010, 06:41
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Posición cursor

Hola, en primer lugar felicitarles por el foro y la web que están llevando. Muchos de mis problemas los he logrado solucionar recurriendo aqui.

Es el primer post que hago en el foro, espero ser breve y claro. Ojala puedan ayudarme.

Mi problema es el siguiente:

- Tengo un formulario en el cual se puede agregar una noticia.



La noticia (el cuerpo) se guarda en la Base de Datos como codigo html, por lo tanto, al escribir la noticia, hay que poner los <br> para saltos, <b></b> para negrita.... etc.

Como ven, encima del textarea hay unos botones los cuales al hacer clic en ellos me ponen en el textarea el codigo correspondiente.

Por ejemplo, al hacer clic en "salto" me coloca un <br>. Al hacer clic en linea me coloca un <hr> ... etc.

TENGO 2 PROBLEMAS:

1- que me coloca el codigo al final del textarea, y no donde yo tenga la posicion del cursor

2- cuando ago clic por ejemplo en "negrita" me pone el <b></b> y el cursor me lo deja aqui: (Señalado en rojo) <b></b>| y lo que me gustaria es que lo dejase aqui: <b>|<b/>

Eso es todo :) espero que me puedan ayudar.

El codigo que empleo es el siguiente:

Botones y textarea noticia:
Código HTML:
Ver original
  1. <tr>
  2.     <td colspan="3" align="center">
  3.     <input name="br" type="button" id="br" value="Salto" onclick="Agregar('<br>')"> .
  4.     <input name="negrita" type="button" id="ngrita" value="Negrita" onclick="Agregar('<b></b>')"> .
  5.     <input name="cursiva" type="button" id="cursiva" value="Cursiva" onclick="Agregar('<i></i>')"> .
  6.     <input name="subrayado" type="button" id="subrayado" value="Subrayado" onclick="Agregar('<u></u>')"> .
  7.     <input name="centrado" type="button" id="centrado" value="Centrado" onclick="Agregar('<center></center>')"> .
  8.     <input name="linea" type="button" id="linea" value="Linea" onclick="Agregar('<hr>')">
  9.     </td>
  10. </tr>
  11. <tr>
  12.     <td valign="top">Noticia: </td>
  13.     <td colspan="2"><textarea name="noticia" cols="70" rows="15"></textarea></td>
  14. </tr>

y la funcion javascript es la siguiente:
Código Javascript:
Ver original
  1. <script language="javascript">
  2. function Agregar(texto) {
  3. document.inserto_cat.noticia.value = document.inserto_cat.noticia.value + texto;
  4. }
  5. </script>
*inserto_cat -> es el nombre del formulario
noticia -> el nombre del textarea

El codigo me funciona bien, podria apañarme asi, pero seria mucho mas comodo para el usuario al que estoy haciendo la web, que los 2 problemas que les comente estuviesen arreglados.

Un saludo y muchas gracias de antemano.
  #2 (permalink)  
Antiguo 09/07/2010, 07:07
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Posición cursor

Fijate en este enlace:
http://www.forosdelweb.com/1755928-post244.html
(sólo tendrás que reemplazar '[' por '<' y ']' por '>')
o en este este:
http://www.disegnocentell.com.ar/notas2.php?id=206
o este:
http://www.disegnocentell.com.ar/notas2.php?id=131
  #3 (permalink)  
Antiguo 09/07/2010, 07:08
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Posición cursor

Muchas gracias, revisare los enlaces que me dejaste.
  #4 (permalink)  
Antiguo 09/07/2010, 09:04
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Posición cursor

Estupendo, ahora lo tengo todo como lo queria, muchas gracias Panino5001

añadir la funcion "salto" para meter un <br>

modifique tu codifo javascript y para esto me valio con tan solo:
Código Javascript:
Ver original
  1. function inssal(tag){
  2. var input = document.form1.contenido;
  3. if(typeof input.selectionStart != 'undefined'){
  4. var start = input.selectionStart;
  5. var end = input.selectionEnd;
  6. var insText = input.value.substring(start, end);
  7. input.value = input.value.substr(0, start) + '<'+tag+'>' + input.value.substr(end);
  8. input.focus();
  9. input.setSelectionRange(start+2+tag.length+insText.length+3+tag.length,start+2+tag.length+insText.length+3+tag.length);
  10. return;
  11. }
  12. }

la funcion para añadir una imagen, la hize similar a la de añadir un link, no se si tal vez se pudiese hacer mejor o ahorrarme algin else.... pero bueno, igualmente me sirve como esta. Te dejo el codigo por si kieres revisar o corregirme algo:
Código Javascript:
Ver original
  1. function insimg(){
  2. var input = document.form1.contenido;
  3. if(typeof document.selection != 'undefined' && document.selection) {
  4. var str = document.selection.createRange().text;
  5. input.focus();
  6. var my_link = prompt("Enter URL:","http://");
  7. if (my_link != null) {
  8. if(str.length==0){
  9. str=my_link;
  10. }
  11. var sel = document.selection.createRange();
  12. sel.text = "<img src=\"" + my_link + "\">";
  13. sel.select();
  14. }
  15. return;
  16. }else if(typeof input.selectionStart != 'undefined'){
  17. var start = input.selectionStart;
  18. var end = input.selectionEnd;
  19. var insText = input.value.substring(start, end);
  20. var my_link = prompt("Enter URL:","http://");
  21. if (my_link != null) {
  22. if(insText.length==0){
  23. insText=my_link;
  24. }
  25. input.value = input.value.substr(0, start) +"<img src=\"" + my_link +"\">"+ input.value.substr(end);
  26. input.focus();
  27. input.setSelectionRange(start+11+my_link.length+insText.length+4,start+11+my_link.length+insText.length+4);
  28. }
  29. return;
  30. }else{
  31. var my_link = prompt("Ingresar URL:","http://");
  32. var my_text = prompt("Ingresar el texto del link:","");
  33. input.value+=" <img src=\"" + my_link + "\">";
  34. return;
  35. }
  36. }

Muchas gracias por tu ayuda.

Un saludo.

Etiquetas: cursor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.