Foros del Web » Programando para Internet » Javascript »

Insertar foco entre dos elementos

Estas en el tema de Insertar foco entre dos elementos en el foro de Javascript en Foros del Web. Hola Estoy intentando insertar el foco entre dos textos (abierto y cerrado) Código: txarea.value += abierto + cerrado; txarea.focus(); return; Para que se entienda mejor ...
  #1 (permalink)  
Antiguo 30/04/2007, 07:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Insertar foco entre dos elementos

Hola

Estoy intentando insertar el foco entre dos textos (abierto y cerrado)

Código:
 
txarea.value += abierto + cerrado;
txarea.focus();
return;
Para que se entienda mejor es como cuando publicamos un mensaje

[ b ]foco[ /b ]

Gracias
  #2 (permalink)  
Antiguo 30/04/2007, 08:05
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
Re: Insertar foco entre dos elementos

Basándote en la rta de este post podrás hacerlo sin problemas:
http://www.forosdelweb.com/f13/utilizar-focus-dejando-espacio-483741/
  #3 (permalink)  
Antiguo 30/04/2007, 09:30
 
Fecha de Ingreso: abril-2006
Mensajes: 80
Antigüedad: 18 años, 1 mes
Puntos: 2
Re: Insertar foco entre dos elementos

Prueba algo así:

Código:
var txarea, abierto, cerrado;
// Aquí le das el valor a txarea, abierto y cerrado

txarea.focus();

var navegador= navigator.appName;
	if (navegador=='Microsoft Internet Explorer')
	{
		seleccion= document.selection.createRange();
		seleccion.text= abierto+seleccion.text+cerrado;
	}
	else // Otro navegador
	{
		var textoEntero= txarea.value;
		var pos1= txarea.selectionStart;
		var pos2= txarea.selectionEnd;
		var pos3= textoEntero.length;
		var textoAnterior= textoEntero.substring(0,pos1)+abierto;
		var textoSeleccionado= textoEntero.substring(pos1,pos2);
		var textoPosterior= cerrado+textoEntero.substring(pos2,pos3);
		txarea.value= textoAnterior+textoSeleccionado+textoPosterior;
		txarea.selectionStart= pos1+abierto.length;
		txarea.selectionEnd= pos2+abierto.length;
	}
  #4 (permalink)  
Antiguo 01/05/2007, 04:17
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Re: Insertar foco entre dos elementos

Gracias, ahora mismo los probaré
  #5 (permalink)  
Antiguo 01/05/2007, 07:10
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Re: Insertar foco entre dos elementos

Gracias a ambos por vuestra respuesta, pero no es lo que necesito.

Os dejo lo que tengo hasta ahora a ver si sabeis solucionarme este problema

Código:
function tamfuente(abierto, cerrado) {
 var txtarea = document.perfil.firma;
 if ((clientVer >= 4) && is_ie && is_win) {
  seleccion = document.selection.createRange().text;
  if (!seleccion) {
   txtarea.value += abierto+" "+cerrado;
   txtarea.focus();
   return;
  }
  document.selection.createRange().text = abierto + seleccion + cerrado;
  txtarea.focus();
  return;
 }
 else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
 {
  clientOtro(txtarea, abierto, cerrado);
  return;
 }
 else
 {
  txtarea.value += abierto + cerrado;
  txtarea.focus();
 }
 almacenado(txtarea);
}
Gracias
  #6 (permalink)  
Antiguo 01/05/2007, 15:56
 
Fecha de Ingreso: abril-2006
Mensajes: 80
Antigüedad: 18 años, 1 mes
Puntos: 2
Re: Insertar foco entre dos elementos

El primer código que te he pasado tenía el defecto de que en IE no colocaba el foco donde tocaba, he modificado la función para que ahora sí que lo haga. Funciona en IE y en Firefox. Si tampoco te sirve pues ya no sé exactamente qué es lo que quieres... pruébalo a ver

Código:
function tamfuente(abierto, cerrado) {
 var txtarea = document.perfil.firma;
 var navegador= navigator.appName;
 txtarea.focus()
 if (navegador=='Microsoft Internet Explorer') {
  seleccion = document.selection.createRange();
  seleccion.text = abierto + seleccion.text + cerrado;
  fin= seleccion.text.length;
  inicio= -(fin+cerrado.length);
  seleccion.text= etiqueta+seleccion.text+cierre;
  seleccion.move('character', inicio); 
  seleccion.moveEnd("character", fin);
  seleccion.select();
  return;
 }
 else
 {
  var textoEntero= txtarea.value;
  var pos1= txtarea.selectionStart;
  var pos2= txtarea.selectionEnd;
  var pos3= textoEntero.length;
  var textoAnterior= textoEntero.substring(0,pos1)+abierto;
  var textoSeleccionado= textoEntero.substring(pos1,pos2);
  var textoPosterior= cerrado+textoEntero.substring(pos2,pos3);
  txtarea.value= textoAnterior+textoSeleccionado+textoPosterior;
  txtarea.selectionStart= pos1+abierto.length;
  txtarea.selectionEnd= pos2+abierto.length;
  return;
 }
 almacenado(txtarea);
}
  #7 (permalink)  
Antiguo 01/05/2007, 16:38
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
Re: Insertar foco entre dos elementos

Yo creo que combinando esto:
faq244 y esto otro: faq251 e investigando un poco podrá lograr lo que necesita o por lo menos explicar mejor en qué está trabado.
  #8 (permalink)  
Antiguo 02/05/2007, 05:52
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Re: Insertar foco entre dos elementos

Gracias a ambos, trabajaré en lo que me habeis indicado.

Por cierto lo que he hecho es un bbcode simple y ahora lo que pretendo es colocar el foco entre las dos etiquetas, de tal forma que el usuario no tenga que usar el ratón dos veces. Una para pinchir sobre el botón y otra para colocar el foco entre la dos etequetas.

Gracias otra vez a ambos
  #9 (permalink)  
Antiguo 14/05/2007, 06:00
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Re: Insertar foco entre dos elementos

Hola otra vez, he estado trabajando en lo que me posteasteis pero no es lo que necesito.

Veamos, lo que necesito es:

Si vais al apartado de Respuesta Rápida, por ejemplo, es este foro y pinchais en el botón del margen derecho superior "A" y despues pinchais en el botón negrita, vereis que se imprime los tags [ b ] [ /b ] y entre ellos se coloca el foco.

Pues eso es lo que quiero que el foco se coloque entre los dos tags cuando punchas un botón.

Gracias
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 21:18.