2010-04-28 25 views
7

He leído varios artículos/preguntas/foros sobre el mejor complemento de autocompletar para jQuery. Después de probar varios buenos, me di cuenta de un defecto en la mayoría.jQuery/AJAX escritura anticipada/autocompletado

  1. Si esta buscando países y tipo 'In', un par de países se muestran. Si continúa escribiendo I-n-d-i-a, esto da como resultado 5 llamadas AJAX (consulte http://www.freeimagehosting.net/uploads/6f1bcd69e1.png) es bastante natural que India sea un subconjunto de In, entonces, ¿por qué volver a llamar? Necesitamos simplemente filtrar la lista recuperada del lado del cliente. ¿Alguien sabe acerca de tal implementación?

  2. ¿Cuál es el estado de la función Autocompletar de Jquery? Leí en StackOverflow que ya no está disponible con Jquery; pero el sitio web de Jquery tiene una marca 'Nueva' además del enlace para Autocompletar.

Gracias

+0

Suena como una oportunidad para escribir un mejor complemento. Imagino que solo el primero, por ejemplo, 10 respuestas son devueltas, y necesita volver a consultar para obtener toda la ind. Pero si hay menos respuestas que el umbral, entonces esas deberían reutilizarse como sugieres. –

+0

Este es un buen punto en el sentido de que si solo agrega a su consulta al final, puede filtrar de lo que tiene. ¿Los complementos ya tienen en cuenta esta idea? Esta pregunta se hizo hace casi dos años y tengo curiosidad por saber la respuesta. – vbullinger

Respuesta

8

El punto se escribe sobre en 1. podría deberse a que:

  • Buscando 'In' shoudl devolver una gran cantidad de resultados
  • Existe algún límite en su lugar, en el lado del servidor, para nunca devolver más de N resultados
  • Lo que significa que la lista completa de recuento Ries contiene "In" no se conoce, en el lado del cliente
  • Lo que implica que no es posible conseguir (con seguridad) la lista que corresponde a "Ind" sin otra petición Ajax.

Una solución a medias que se utiliza a menudo es no enviar una solicitud Ajax inmediatamente después de una pulsación de tecla, pero solo 100 o 200 milisegundos después.

De esta forma, si el usuario escribe "Indi" rápidos, y espera antes de introducir ninguna otra cosa, la única será de 1 petición Ajax, para "Indi" (y ninguna para "In", "Ind")

+0

Ooh sí, ya lo hice para reducir el número de solicitudes. El escenario que discutió es válido, pero puede haber parámetros definidos para evitar este comportamiento subóptimo. – Prasad

3

La autocompletar jQuery UI se ha agregado en la nueva versión 1.8, por lo que hasta ahora he visto en la actividad del proyecto, todavía se está desarrollando. Hay un example que usa un caché del lado del cliente con respecto al problema que usted explicó. También puede usar la opción delay ya mencionada,.

+0

Es bueno saber que continuarán con Autocompletar. Sin embargo, este ejemplo no es el mejor cuando se trata de almacenar en caché. Intenta encontrar 'Nightingale' un char a la vez ..Al pasar de 'noche' (5 resultados) a 'noche' (2 resultados), se activa una llamada :( Supongo que tendré que vivir con las llamadas adicionales :(:(:( – Prasad

+0

Bueno, lo que hacen allí es solo simple coincidencia de expresiones regulares. Por lo tanto, básicamente tendría que coincidir con su lista en caché antes de enviar una nueva solicitud. Para las fuentes remotas, siempre debe tener en cuenta que no puede obtener toda la lista para ingresar * Por ejemplo *, puede estar limitado a un número máximo de artículos, también. Por lo tanto, tendrá que enviar un nuevo evento para la próxima carta de todos modos. – Daff