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

Reemplazar texto por input text

Estas en el tema de Reemplazar texto por input text en el foro de Frameworks JS en Foros del Web. Hola, yo de nuevo Quiero que cuando se haga click/hover en un texto, se cambie ese texto por input tipo text y que cuando se ...
  #1 (permalink)  
Antiguo 17/01/2011, 10:23
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Reemplazar texto por input text

Hola, yo de nuevo

Quiero que cuando se haga click/hover en un texto, se cambie ese texto por input tipo text y que cuando se "desenfoque" ese input quede de nuevo como texto (sin el input).

Hice varios códigos pero ninguno hace el "desenfoque" y se supone que debe hacerlo:

Primer código:
Código Javascript:
Ver original
  1. $('.editaImagen').hover(
  2.         function() {
  3.             texto = $(this).text();
  4.             $(this).replaceWith("<input type='text' value='"+texto+"' />");
  5.         },
  6.         function() {
  7.             alert(texto);
  8.         }
  9.     );


Segundo código con live:
Código Javascript:
Ver original
  1. $('.editaImagen').live('hover', function () {
  2.         texto = $(this).text();
  3.         $(this).replaceWith("<input type='text' value='"+texto+"' />");
  4.     }, function () {
  5.         alert(texto);
  6.     }
  7.     );

Los dos funcionan entrando al hover, pero ninguno ejecuta el out de hover...

Pensé que iba a funcionar con live pero tampoco...

Gracias!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #2 (permalink)  
Antiguo 17/01/2011, 11:06
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Reemplazar texto por input text

Deberias tener en cuenta lo que estas haciendo Carxl, estas reemplazando el elemento osea lo estas quitando del DOM, sobre que va a haber un mouseout si el elemento ya no esta en el DOM?, la forma mas simple seria que crearas un wrapper para el elemento, algo asi:

Código Javascript:
Ver original
  1. $('.editaImagen').hover(
  2.    function() {
  3.       var el = $(this).children('.wrapper');                                               
  4.       el.replaceWith("<input type='text' value='" + el.text() + "' />");                                               
  5.    },
  6.    function() {
  7.       var el = $(this).children('input');
  8.       el.replaceWith("<div class='wrapper'>" + el.val() + "</div>");                                               
  9.    }
  10. );

y el html deberia ser algo asi:

Código HTML:
Ver original
  1. <ul>
  2.    <li class="editaImagen">
  3.       <div class="wrapper">Lorem ipsum dolor sit amet</div>
  4.    </li>
  5.    <li class="editaImagen">
  6.       <div class="wrapper"> Ut enim ad minim veniam</div>
  7.    </li>
  8. <ul>

Saludos.

PD: si queres hacer las celdas o algo parecido editable, no seria mejor en el evento click ?.
  #3 (permalink)  
Antiguo 17/01/2011, 15:10
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Reemplazar texto por input text

Hola masterpuppet... Entiendo lo que me dices

Me dejé de líos :D

Usé este plugin... http://www.appelsiini.net/projects/jeditable

Hace todo lo que necesito... leeré sobre wrapper para saber usarlo.

De nuevo gracias!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com

Etiquetas: input, reemplazar, txt
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 16:41.