Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/07/2009, 19:54
Avatar de djaevi
djaevi
 
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 18 años
Puntos: 47
Respuesta: Problemas con la busqueda de datos dentro de un list box

Bueno justo estoy trabajando en algo asi con ajax pero te dejo un ejemplo bastante sencillo en javascript a ver si te sirve...

Aca va el codigo javascript primero:

Código PHP:
var paises = new Array('Argentina','Argelia','Arabia','Andorra','Armenia','Afganistan','Alemania');

// voy a usar 2 funciones una que arma una lista del tipo select en base a:
// nombre de formulario, nombre de select, y un array que llena las opciones
// esta funcion simplemente con estos datos llena la lista que yo le indico
// con las opciones del array y algo muy importante que hace tambien
// es igualar la propiedad length de la lista a la del array para no duplicar valores

function armarLista(elFormulario,elSelect,elArray) {
    var 
obtenerSelect = eval('document.'+elFormulario+'.'+elSelect);
    
obtenerSelect.length elArray.length;
        for (var 
i=0;i<elArray.length;i++) {
                var 
opcion = new Option(elArray[i],elArray[i]);
                
obtenerSelect[i] = opcion;
        }
}

// esta es la funcion que va a comparar los datos ingresados por el usuario
// con las opciones de un array que le paso como parametro en este caso
// el mismo con el que armo mi lista

function reArmarArray(arrayInicial) {
    var 
arrayNuevo = new Array();
    var 
texto document.getElementById('busqueda').value;

// lo que hago en el bucle es preguntar si el texto capturado del campo de texto
// es igual a un fragmento de la opcion del array, este fragmento coincide
// con el largo del texto ingresado ejemplo
// el usuario ingreso hola va a cortar todas las opciones del array a las 4
// primeras letras para ir viendo si coinciden
// por ultimo puse un toLowerCase no distingue mayusculas y minusculas
// y si son iguales armo un nuevo array con las opciones que van coincidiendo

        
for (var i=0i<arrayInicial.lengthi++) {
            if (
texto.toLowerCase() == arrayInicial[i].substring(0,texto.length).toLowerCase()) {
                
arrayNuevo.push(arrayInicial[i]);
            }
        }

// por ultimo vuelvo a llamar la funcion armar lista y le paso como parametro el nuevo array

    
armarLista('buscador','lista',arrayNuevo);
}

</script> 
y aca el codigo html

Código HTML:
<body onload="armarLista('buscador','lista',paises)">
<form name="buscador">
<input type="text" id="busqueda" value="caja1" onkeyup="reArmarArray(paises)";>
<select name="lista" id="lista" multiple="multiple">
</select>
</form>
</body> 
Ojala te sirva salu2