EDIT: Voy a dejar esta respuesta aquí como una especie de punto de referencia teórico, pero suena como es probable que sea más útil para usted :)
Negación del autocompleter answer: Aunque trabajo para Google (que claramente tiene elementos de "Sugerir" en varias IU). No he observado ningún código en esta área, ni siquiera he hablado con nadie sobre el aspecto del lado del cliente.
El lenguaje del lado del servidor es probablemente irrelevante aquí. El bit importante es el AJAX requerido en el lado del cliente.
Le sugiero que tenga un temporizador de aproximadamente 1 segundo (experimente para encontrar un punto óptimo) que se restablece cada vez que el usuario ingresa una tecla en el cuadro de texto y cancela si el usuario navega fuera del cuadro de texto. Si el temporizador se dispara, haz que ejecute una solicitud AJAX. La solicitud de AJAX contendría lo que el usuario ha tipeado hasta ahora. La respuesta AJAX debe ser la lista de sugerencias y el texto original de la solicitud.
Si, cuando la respuesta AJAX retorna, el texto en el cuadro de texto sigue siendo el mismo que el campo en la respuesta (es decir, el usuario no ha escrito desde entonces) y si el cuadro de texto aún tiene foco, ofrezca un menú desplegable. (Debe haber cientos de páginas de ejemplo sobre comboboxes HTML para hacer este lado de las cosas).
Todo lo que el servidor necesita hacer es responder a la solicitud AJAX realizando la búsqueda y formateando la respuesta de manera apropiada, es mucho más fácil que el lado del cliente!
Espero que ayude, disculpe por no tener ningún código de muestra, pero sospecho que es bastante complicado y no soy realmente un desarrollador de JavaScript.