Foros del Web » Programando para Internet » Javascript »

Javascript no actúa después de onBlur

Estas en el tema de Javascript no actúa después de onBlur en el foro de Javascript en Foros del Web. Hola... mi problema es el siguiente: Estoy tratando de obtener de forma dinámica resultados bajo el campo de un formulario (lista desplegable). Hasta ahí perfecto, ...
  #1 (permalink)  
Antiguo 28/06/2011, 10:30
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 13 años
Puntos: 4
Javascript no actúa después de onBlur

Hola... mi problema es el siguiente:

Estoy tratando de obtener de forma dinámica resultados bajo el campo de un formulario (lista desplegable). Hasta ahí perfecto, ahora necesito que al hacer clic en uno de estos datos... el contenido seleccionado pase a un div.

Surge un curioso problema, si elimino la lista desplegable al perder el foco, ya no me reacciona el onclick del elemento interior. En cambio, si quito el evento onBlur, sí que me reacciona de forma esperada.

Supongo que se debe a eliminar la lista desplegable justo en el instante de hacer clic, pero, ¿cómo podría solucionarlo?
  #2 (permalink)  
Antiguo 28/06/2011, 14:02
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Javascript no actúa después de onBlur

¿Puedes poner un ejemplo de lo que estás intentando hacer para tener una idea más clara?
  #3 (permalink)  
Antiguo 28/06/2011, 15:13
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 13 años
Puntos: 4
Respuesta: Javascript no actúa después de onBlur

Sí claro perdona, supuse que se entendería, aquí dejo el problema:

Tengo un campo de texto para introducir el nombre de usuario



Al obtener el foco, procedemos a buscar los usuarios según el string escrito -- evento onKeyUp() para recogerlos de forma dinámica.



Estos resultados se muestran en una lista desplegable (div posicionado bajo el campo de texto)... cada cadena de texto es un resultado, que lleva lo siguiente:

Código HTML:
<a onclick='getUsersSetToForm("username")'><p>username</p></a> 
Nota*: username es el valor de cada cadena.



La función esconde el campo de texto y muestra un div que contiene el nombre de usuario clickeado.



El problema en sí: Todo funciona normal, pero deja de hacerlo en cuanto especifico al campo de texto un evento al perder el foco -- onBlur(), este lo que hace es esconder la lista desplegable. Sucede que hago clic en la cadena elegida de la lista desplegable, y esta se esconde, pero sin ejecutar la función getUsersSetToForm()

Pienso que es debido a lo siguiente: Al hacer clic en uno de los resultados, se pierde el foco, y justo antes de poder llegar a realizar la función, desaparece la lista y el clic se hace "en el vacío"...

Curiosidad: Al mostrar un alert('loqesea') justo antes de esconder el div, es decir, en el evento onBlur(), sí que funciona todo.

Un saludo, espero que me puedan ayudar, gracias.
  #4 (permalink)  
Antiguo 28/06/2011, 15:37
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Javascript no actúa después de onBlur

Sería más rápido ver el problema si pusieses el trozo de código donde lo haces, aunque tiene toda la pinta de ser lo que tú dices.
  #5 (permalink)  
Antiguo 28/06/2011, 15:46
Avatar de Alvaro_Franz  
Fecha de Ingreso: mayo-2011
Mensajes: 84
Antigüedad: 13 años
Puntos: 4
Respuesta: Javascript no actúa después de onBlur

Cita:
Iniciado por alexg88 Ver Mensaje
Sería más rápido ver el problema si pusieses el trozo de código...
De acuerdo, aquí te lo dejo:

Código HTML:
<div id='user-send-hidden' style='display:none;'></div>
<input type='text' id='get-users-input' name='rec_user' onKeyUp='if(this.value.length>3){ getUsersList(this.value); document.getElementById("get-users-result").style.display="block"; }'> 
*get-users-result=Lista desplegable
*user-send-hidden=Div a Rellenar cuando hago clic en un resultado
*get-users-input=Input que escondo al hacer clic en resultado

Los resultados (Dentro de la lista desplegable)

Código HTML:
<a onclick='getUsersSetToForm("username")'><p>username</p></a> 
Función getUsersSetToForm()

Código Javascript:
Ver original
  1. function getUsersSetToForm(string){
  2. document.getElementById("user-send-hidden").innerHTML=string;
  3. document.getElementById("get-users-input").value=string;
  4. document.getElementById("get-users-input").style.display="none";
  5. document.getElementById("user-send-hidden").style.display="block";
  6. document.getElementById("get-users-result").style.display="none";
  7. }

Esa es la parte problemática del asunto. En caso de ser como yo decía, ?hay alguna alternativa para esconder la lista desplegable tras abandonar el foco, independientemente de que se haga clic en algún usuario o en cualquier otra zona de la pantalla?

Etiquetas: onblur
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 00:54.