Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Convertir texto a input.

Estas en el tema de Convertir texto a input. en el foro de Frameworks JS en Foros del Web. Hola a todos, queria que al hacer click en un span, por ejemplo, este se convierta en una etiqueta input. Como podria hacerlo? Gracias...
  #1 (permalink)  
Antiguo 24/09/2011, 11:19
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Convertir texto a input.

Hola a todos, queria que al hacer click en un span, por ejemplo, este se convierta en una etiqueta input.

Como podria hacerlo? Gracias
  #2 (permalink)  
Antiguo 24/09/2011, 16:50
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: Convertir texto a input.

Hola, te dejo un ejemplo sencillísimo hecho al vuelo en jQuery (no es muy usable, pero como ejemplo sirve):

Código Javascript:
Ver original
  1. $(document).ready(function()
  2. {
  3.   $('.mispan').click(function()
  4.   {
  5.     var data = $(this).text();
  6.     $(this).remove();
  7.        
  8.     $('<input class="miedit" type="text" value="'+data+'" />').appendTo('#midiv');
  9.   });
  10. });

Código HTML:
Ver original
  1. <div id="midiv">
  2.   <span class="mispan">texto 1</span>
  3. </div>


Un saludo.
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.
  #3 (permalink)  
Antiguo 24/09/2011, 19:24
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Convertir texto a input.

Despues de dar muchisimas vueltas consegui hacer esto que me funciona suficiente:

Código Javascript:
Ver original
  1. $("").click(function() {
  2.         var input = $('<input />', {'type': 'text', 'class': 'in', 'name': 'nombre', 'value': $(this).html()});
  3.         $(this).parent().append(input);
  4.     $(this).remove();
  5.         input.focus();
  6. })
  7.  
  8. $(".edit").click(function() {
  9.         $("#"+id+" .nombrediv").html('<strong class="nombre">'+nombre+'</strong>');
  10.         $("#"+id+" .razadiv").html('<span class="raza">'+raza+'</span>');
  11.         $(this).hide();
  12.     })

El codigo es mucho mas largo, pero borre partes de AJAX, etc.

.box-gale .nombre es el span.
Intente hacer un
Código Javascript:
Ver original
  1. $("input").blur(function() {
  2.      ...
  3. })
pero no funciono. No se si es por que es algo que se ha añadido despues, pero no funciona :S
Por lo que añadi un boton de enviar que es .edit.

Un saludo y gracias
  #4 (permalink)  
Antiguo 25/09/2011, 08:40
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: Convertir texto a input.

Hola, veo que ya te has apañado bien ^^

Respecto al blur()... Efectivamente tendría que estar dentro de la función del evento onclick para que funcionase. El problema sería que al utilizar remove() sólo funcionaría una vez. Está claro que es posible pero hay que cambiarlo un poco.

Cualquier cosa por aquí andamos.


Un saludo.
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.
  #5 (permalink)  
Antiguo 25/09/2011, 10:31
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Convertir texto a input.

Metiendo blur() dentro de la function de click() si funciona, pero es cierto, solo una vez.

Un saludo y gracias
  #6 (permalink)  
Antiguo 25/09/2011, 10:58
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: Convertir texto a input.

Como te decía es cuestión de no utilizar remove(). En lugar de ello, podríamos utilizar hide() para el span y remove para el input (porque sólo lo necesitamos para modificar el span).

El resultado, modificando el primer código que te puse, sería el siguiente:

Código Javascript:
Ver original
  1. $(document).ready(function()
  2. {
  3.     $('.mispan').click(function()
  4.     {
  5.         var mispan = $(this);
  6.     var data = mispan.text();
  7.     mispan.hide();
  8.        
  9.     $('<input class="miedit" type="text" value="'+data+'" />').insertBefore(mispan).focus();
  10.        
  11.         $('.miedit').blur(function()
  12.         {
  13.             var data = $(this).val();
  14.             $(this).remove();
  15.            
  16.             mispan.text(data).show();
  17.         });
  18.     });
  19. });

Código HTML:
Ver original
  1. <span class="mispan">hola mundo</span>
  2. <br />
  3. <span class="mispan">adiós mundo</span>


Ahora, en medio pues haz lo que tengas que hacer con ajax y guarda y recoge los datos convenientemente. Si lo de utilizar un botón no te convence, esta es la solución ^^


Un saludo!
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.
  #7 (permalink)  
Antiguo 25/09/2011, 17:33
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Convertir texto a input.

Ya lo adapte de esa forma y me funciona genial
  #8 (permalink)  
Antiguo 26/09/2011, 11:59
Avatar de KoswiDigital  
Fecha de Ingreso: abril-2011
Ubicación: Galicia - España
Mensajes: 220
Antigüedad: 13 años
Puntos: 37
Respuesta: Convertir texto a input.

Me alegro de que te haya servido :)
__________________
http://www.koswidigital.com - Diseño web, Programación web, Fotografía profesional, Retoque digital.

Etiquetas: javascript
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:50.