Programación Web y Scripting > JavaScript
Backspaces
(1/1)
cinkey:
: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 --- <html><head><title>Busqueda en lista</title></head> <body bgcolor="#FFFFFF" text="#000000"> <form id="formulario" name="formulario"> Buscar: <input type="text" id="busca" name="busca" onKeyUp="buscar();"> <br/> Listado: <select id="miCombo" name="miCombo" size=8></select></form> <script> // Defino el array con los datos lista = new Array('Atletismo ','Aerobic','Balonmano','Beisbol', 'Badminton','Baloncesto','Footing','Fútbol','Gimnasia','Voleibol'); function buscar() { limpiarLista(); // Obtengo el valor del texto texto = document.formulario.busca.value; // Creo la expresión regular expr = new RegExp("^" + texto,"i"); // Recorro la lista. Si la expresión regular es OK y = 0; for (x=0;x<lista.length;x++) { if (expr.test(lista[x])) { document.formulario.miCombo[y] = new Option(lista[x]); y++; } } } function limpiarLista() { for (x=document.formulario.miCombo.length;x>=0;x--) document.formulario.miCombo[x] = null; } </script></body></html>
F_Tanori:
No entendi muy bien...
pero mira...
para bloquear la tecla puedes enviar el evento
--- Código: Text --- <input type="text" id="busca" name="busca" onKeyUp="buscar(event);">
--- Código: Text ---function buscar(e) { var tecla; try { tecla=e.keyCode // IE } catch (e ) { tecla=e.which; // FF } if (tecla != 8) // cuando no sea BackSpace { //Codigo si no es backspace } }
Para borrar una lista sin necesidad de recorrer todos los elementos puedes hacerlo asi....
--- Código: Text ---function limpiarLista() { document.formulario.miCombo.innerHTML="";}
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
cinkey:
gracias me sirvio de mucho
Navegación
Ir a la versión completa