• Viernes 8 de Noviembre de 2024, 12:45

Autor Tema:  Backspaces  (Leído 3712 veces)

cinkey

  • Miembro activo
  • **
  • Mensajes: 83
    • Ver Perfil
Backspaces
« en: Sábado 10 de Noviembre de 2007, 00:27 »
0
:rolleyes: perdone que les moleste otra ves pero tengo un problema un poco casual lo que sucede es qeu tegno este codigo para hacer una busqueda dinamica en mi array lo encuentra y todo el asunto bien el problema esta que al borrar la ultima letra para que busque me carga todos los datos por default eso no me conbiene porque la base si es bastante grande deberia vaciar la lista estaba pensando en bloquear la tecla backspace pero no se como colocarla la funcion por que si lo hago ya no me funciona el script bueno quiero que no me carge otra ves todo los datosque se quede vacia porfavor no se si me explico bien pero el problema esta al borrar el ultimo valor por que enves de vaciar la lista carga todo el array deberia limpiar la lista aca les dejo el ejemplo

Código: Text
  1.  
  2. <html>
  3. <head>
  4. <title>Busqueda en lista</title>
  5. </head>
  6.  
  7. <body bgcolor="#FFFFFF" text="#000000">
  8.  
  9. <form id="formulario" name="formulario">
  10.   Buscar:
  11.   <input type="text" id="busca" name="busca" onKeyUp="buscar();">
  12.   <br/>
  13.   Listado:
  14.   <select id="miCombo" name="miCombo" size=8></select>
  15. </form>
  16.  
  17. <script>
  18.  
  19.  // Defino el array con los datos
  20.  lista = new Array('Atletismo ','Aerobic','Balonmano','Beisbol',
  21.  'Badminton','Baloncesto','Footing','Fútbol','Gimnasia','Voleibol');
  22.    
  23.  
  24.  function buscar() {
  25.  
  26.    limpiarLista();
  27.    
  28.    // Obtengo el valor del texto
  29.    texto = document.formulario.busca.value;
  30.    
  31.    // Creo la expresión regular
  32.    expr = new RegExp("^" + texto,"i");
  33.    
  34.    // Recorro la lista. Si la expresión regular    es OK
  35.    y = 0;
  36.    
  37.    for (x=0;x<lista.length;x++) {
  38.      if (expr.test(lista[x])) {
  39.       document.formulario.miCombo[y]    = new Option(lista[x]);
  40.        y++;
  41.      }
  42.    }
  43.  }
  44.    
  45.  function limpiarLista() {
  46.    for (x=document.formulario.miCombo.length;x>=0;x--)
  47.      document.formulario.miCombo[x] = null;
  48.  }
  49.    
  50. </script>
  51. </body>
  52. </html>
  53.  
  54.  

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Backspaces
« Respuesta #1 en: Domingo 11 de Noviembre de 2007, 00:05 »
0
No entendi muy bien...

pero mira...


para bloquear la tecla puedes enviar el evento

Código: Text
  1.  
  2.  <input type="text" id="busca" name="busca" onKeyUp="buscar(event);">
  3.  


Código: Text
  1. function buscar(e) {
  2.  
  3.  
  4.   var tecla;
  5.  
  6.     try
  7.        {
  8.           tecla=e.keyCode // IE
  9.        }
  10.     catch (e )
  11.        {
  12.          tecla=e.which; // FF
  13.        }  
  14.  
  15.     if (tecla != 8) // cuando no sea BackSpace
  16.        {  //Codigo si no es backspace  }
  17.  
  18. }
  19.  

Para borrar una lista sin necesidad de recorrer todos los elementos puedes hacerlo asi....

Código: Text
  1. function limpiarLista()
  2. {
  3.   document.formulario.miCombo.innerHTML="";
  4. }
  5.  
  6.  

Espero te sirva evitas el ciclo :P


El codigo que expones a mi me funciona, y no me recarga la lista con bs, y creo que si debe funcionar asi porque si al dar bs el criterio de busqueda se modifica entonces la lista debe cambiar no?

Ejemplo
supongamos que buscas...

"Atleti"

y que existieran

Atletico
Atletismo

pero si buscas

"Atletis"

Atletismo

pero al dar bs se debe volver a la lista anterior

"Atleti"

Atletico
Atletismo


y ese comportamiento tiene segun la prueba que hice de tu codigo


*bs = BackSpace

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

cinkey

  • Miembro activo
  • **
  • Mensajes: 83
    • Ver Perfil
Re: Backspaces
« Respuesta #2 en: Domingo 11 de Noviembre de 2007, 19:52 »
0
gracias me sirvio de mucho