Foros del Web » Programando para Internet » Jquery »

problemas JQuery con .click() .blur() .prepend()

Estas en el tema de problemas JQuery con .click() .blur() .prepend() en el foro de Jquery en Foros del Web. Saludos Aficionados y WebMasters. Tengo un dificil problema el cual aparenta ser sencillo, es con los metodos .blur() y .click() del JQuery, no puedo utilizar ...
  #1 (permalink)  
Antiguo 02/09/2010, 08:38
 
Fecha de Ingreso: junio-2009
Mensajes: 1
Antigüedad: 15 años, 5 meses
Puntos: 0
De acuerdo problemas JQuery con .click() .blur() .prepend()

Saludos Aficionados y WebMasters.
Tengo un dificil problema el cual aparenta ser sencillo, es con los metodos .blur() y .click() del JQuery, no puedo utilizar el metodo .blur() en una caja de texto ensertada por jquery, mediante el evento .click() de un div ( div id="add" div ), inserto mi input con el metodo .prepend(), y le aplico luego un .blur() al input para que aparesca una alert("") cuando pierda el foco. haber si hay un Capo en Jquery podria darme una solucion.

les adelanto que el metodo .blur() si funciona con todas las variantes que se pueda hacer para insertarlo, menos cuando lo insertas mediante un .click().


::::::::: Un link para que veas el ejemplo en ejecucion :::::::::::::

http://gadowks.net/bug_jquery/bug_append_blur.html





Código:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<title>mi bug</title>
</head>
<body>

<div id="add" style="width:20px;height:20px;background-color:#930"></div>

<div id="contenido">
</div>


</body>
<script type="text/javascript" >
$(document).ready(function(){
	//insertando input por Jquery
	$("#add").click(function(){
		$('#contenido').prepend("<input name='cajita' id='caita'>");
	});
		



	$('input').blur( function() {
			var valor= $(this).attr('value');				  
			alert('evento Blur  y '+valor);
	});
	
	
	
})		 
</script>
</html>
  #2 (permalink)  
Antiguo 02/09/2010, 09:27
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 10 meses
Puntos: 14
Respuesta: problemas JQuery con .click() .blur() .prepend()

El problema es que ingresas el input mediante un click, y el evento blur lo asignas en el document ready cuando el elemento todavía no existe.

Solución:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.   $(document).ready(function(){
  3.     //insertando input por Jquery
  4.     $("#add").click(function(){
  5.       $('#contenido').prepend("<input name='cajita' id='cajita' onblur='showValue()'>");
  6.     });
  7.   }); // end ready
  8.  
  9.   showValue = function() {
  10.     var valor= $('#cajita').attr('value');               
  11.     alert('evento Blur  y '+valor);
  12.   });
  13. </script>
  #3 (permalink)  
Antiguo 02/09/2010, 10:18
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Tema movido desde javascript
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 02/09/2010, 11:35
Avatar de tredio  
Fecha de Ingreso: noviembre-2008
Ubicación: Carabobo
Mensajes: 466
Antigüedad: 16 años
Puntos: 66
Respuesta: problemas JQuery con .click() .blur() .prepend()

como te explicaron anteriormente eso pasa por que has definido el evento antes de que el elemento haya sido creado por eso no te responde, para solucionar eso puedes usar la funcion live() de jquery, te quedaria algo asi:

Código Javascript:
Ver original
  1. <script type="text/javascript" >
  2. $(document).ready(function(){
  3.     //insertando input por Jquery
  4.     $("#add").click(function(){
  5.         $('#contenido').prepend("<input name='cajita' id='caita'>");
  6.     });
  7.        
  8.  
  9.  
  10.  
  11.     $('input').live('blur', function() {
  12.             var valor= $(this).attr('value');                
  13.             alert('evento Blur  y '+valor);
  14.     });
  15.    
  16.    
  17.    
  18. })       
  19. </script>

para mas info sobre esa funcion consulta la API de jquery.
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 03:42.