Foros del Web » Programando para Internet » Javascript »

Buscar entre las opciones de un select

Estas en el tema de Buscar entre las opciones de un select en el foro de Javascript en Foros del Web. Hola a todos, Es mi primer post en los foros, así que en primer lugar me disculpo si no he acertado posteando en esta rama, ...
  #1 (permalink)  
Antiguo 08/05/2008, 10:32
 
Fecha de Ingreso: mayo-2008
Mensajes: 5
Antigüedad: 16 años, 6 meses
Puntos: 0
Buscar entre las opciones de un select

Hola a todos,

Es mi primer post en los foros, así que en primer lugar me disculpo si no he acertado posteando en esta rama, pero no estaba seguro de donde ubicar mi pregunta.

Mi duda es la siguiente, estoy realizando un formulario en el que el usuario debe seleccionar a través de varios campos select tanto su país, como su provincia y localidad. El problema surge porque hay provincias que pueden llegar a incluir miles de localidades y claro, para el usuario buscar la suya en el select se puede hacer engorroso.

He visto en algunas webs campos select sobre los que se puede ir presionando letras del teclado y el propio campo te va buscando dentro de sus contenidos los que corresponden con la sucesión de letras que vas indicando. Algo así como un buscador dinámico dentro del propio select. Por ejemplo, si quiero buscar Granada, y pulsaría la G luego la R y el select iría desplazándose a los contenidos de su lista que coinciden con las letras pulsadas.

Los select tradicionales tienen un comportamiento parecido, pero únicamente sirve para introducir la primera letra de la opción (en el ejemplo anterior solo me valdría pulsar la G porque al pulsar la R ya no serviría para nada).

Bueno, espero haberme sabido explicar y que alguien pueda ayudarme.
Un saludo y muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 08/05/2008, 21:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 169
Antigüedad: 16 años, 11 meses
Puntos: 6
Re: Buscar entre las opciones de un select

Postea esto en el foro de ajax!!
lo puedes hacer con una base de datos que contenga la información y con archivos php!

En este link hay un ejemplo y el código fuente: http://www.formatoweb.com.ar/ajax/
  #3 (permalink)  
Antiguo 09/05/2008, 01:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 303
Antigüedad: 16 años, 8 meses
Puntos: 4
Re: Buscar entre las opciones de un select

Estoy de acuerdo en que lo mejor es hacerlo via AJAX.
Puedes ver un ejemplo con esa funcionalidad en Google Suggest
  #4 (permalink)  
Antiguo 09/05/2008, 02:02
 
Fecha de Ingreso: mayo-2008
Mensajes: 5
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Buscar entre las opciones de un select

Muchas gracias a los dos.

Sabía que podría hacerlo mediante ajax, pero quería saber si existía alguna posibilidad de buscar directamente sobre las opciones del select sin necesidad de acceder a bd.

De todas formas, muchas gracias.
  #5 (permalink)  
Antiguo 09/05/2008, 02:39
 
Fecha de Ingreso: diciembre-2007
Mensajes: 169
Antigüedad: 16 años, 11 meses
Puntos: 6
De acuerdo Re: Buscar entre las opciones de un select

Cita:
Iniciado por Alkarod Ver Mensaje
.... quería saber si existía alguna posibilidad de buscar directamente sobre las opciones del select sin necesidad de acceder a bd.
...
Bueno en mi opinión, al hacer esto con ajax sabemos que recibimos todos los datos de la base de datos si tienes arreglos en javascript puedes hacer algo parecido como Google Suggest si al fin y al cabo ajax recibe datos de mysql y los datos los puedes cargar al principio. Bueno en todo caso habría que pensar bien como hacer lo mismo solo con javascrip, cargando toda la información de la base de datos al principio.

Ojala que te resulte lo que deseas, adiós.
  #6 (permalink)  
Antiguo 09/05/2008, 04:12
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 19 años, 2 meses
Puntos: 84
Re: Buscar entre las opciones de un select

Bueno, se puede hacer sin ajaX, teniendo todas las Ciudades en un Array.

Doy por supuesto, que sabes obtener las pulsaciones del teclado y las letras y tal, asi que voy al grano :

Código PHP:

function obtenerListaCiudades(textoEscrito,arrayCiudades) {


       var 
textoExpReg '^' textoEscrito '.*' ;
       var 
regex = new RegExp(textoExpReg) ;

       var 
i=;
       var 
ciudadesSeleccionadas = Array() ;
       while (
arrayCiudades.length)
       {
              if(
arrayCiudades[i].search(regex) != -1)
                     
ciudadesSeleccionadas[ciudadesSeleccionadas.length] = arrayCiudades[i] ;              

              
i++ ;
       }

       return 
ciudadesSeleccionadas ;

--» A esta funcion la llamarias con cada Pulsacion de teclado, pasandole el texto introducido en el Textbox, y el array con todas las Ciudades

--» Esta funcion te Devolveria un Array con las ciudades que van concordando, luego con ese array ya puedes hacer lo que quieras: mostrarselas al usuario, supongo xD

--» Espero no haberme equivocado con la sintaxis de las Expresiones regulares, encuanto estas en 3 o 4 lenguajes, q cambian pekeñeces, no estas seguro de nada.

--» El array de Ciudades Inicial, claramente lo tienes que tener echo antes.

--» Dentro de lo que cabe, creo que no me he equivocado en la function, alomejor algun error sintactico que puedes arreglar tu ^_^


Si no te va, o te da error y no sabes como arreglarlo, o no ves el error, postealo aqui si eso :]

PD: Toda esa gente loca por ajaX, tranquilos!!, hay muchas cosas que se pueden hacer con ajaX, pero tambien se pueden hacer sin ellas...

PD2: Yo uso mucho ajaX xD

!
  #7 (permalink)  
Antiguo 09/05/2008, 11:53
 
Fecha de Ingreso: marzo-2008
Mensajes: 303
Antigüedad: 16 años, 8 meses
Puntos: 4
Re: Buscar entre las opciones de un select

Cita:
Iniciado por miSko Ver Mensaje
...
PD: Toda esa gente loca por ajaX, tranquilos!!, hay muchas cosas que se pueden hacer con ajaX, pero tambien se pueden hacer sin ellas...
...
!
Por supuesto, pero para este caso en concreto la lista de ciudades puede ser inmensa, por lo que el fichero HTML podria ser muy grande y tardar demasiado en cargar.
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 04:47.