2012-05-29 21 views
35

Actualmente estoy trabajando en mi propio script de autocompletar/sugerir y quiero lograr el mismo efecto que Google tiene en su sitio principal.¿Cómo implementar un campo de entrada similar a Google Suggest?

Cuando el usuario comienza a escribir (por ejemplo stack), aparecen 4 sugerencias en una lista desplegable a continuación pero ... al mismo tiempo, la que está en la parte superior muestra "en" el campo de entrada en color gris :

Screenshot

¿Cómo sería posible poner en otra cadena de entrada con un estilo diferente?

¿Es esto un <span> sobre la entrada con el valor mayor z-index? Cuando hago clic en la parte gris de la cadena, el campo de entrada no se enfoca, así que creo que algo tiene que pasar.

Si, de hecho, este es un <span> (u otra <div>) sentado sobre la entrada a continuación, ¿cómo saben que la primera parte de la cadena (stack) termina y dónde colocar (ancho) la palabra overflow (en este caso)

¿Alguien sabe cómo lograr este efecto?

Respuesta

44

Después de inspeccionar el código, he encontrado que es un campo input en la parte superior de otro campo input. El campo input autocompletado está configurado como deshabilitado, dándole el color gris.

Usando este método no tienen que calcular dónde termina la cadena como lo dijo anteriormente, simplemente coloque el campo real input sobre el campo autocomlete input.

Ejemplo: enter image description here

actualización

He aquí una demostración rápida http://jsfiddle.net/dargf/
Por supuesto, habría que añadir en su propio Javascript autocompletar, pero eso es un ejemplo del estilo .

HTML

<div> 
    <input id="main" type="text" /> 
    <input id="autocomplete" type="text" disabled="disabled" /> 
</div> 

CSS

div 
{ 
    position: relative; 
} 
#main{ 
    position: absolute; 
    top: 0; 
    left: 0; 
    z-index: 11; 
    background: transparent; 

} 
#autocomplete{ 
    position: absolute;  
    top: 0; 
    left: 0; 
    background: transparent; 
    z-index: 10; 
} 

Javascsript

$('#main').keyup(function(e){ 
    console.log(e); 
    $('#autocomplete').val($(this).val() + 'asdf') 
}); 
+0

Tenga en cuenta que esto no funciona correctamente con IE10, IE9, y probablemente todas las versiones por debajo de 11. Probado con IETester y cambiando el "modo de documento" en IE11. Google no parece mostrar el segundo campo de entrada en IE (incluso IE11, aunque funciona) – personne3000

+0

Para que funcione en IE10- (ver http://stackoverflow.com/questions/15662687/ie10-anchor-tag-z- index-issue), use "background: rgba (0,0,0,0)" para #main en lugar de "transparent"; También recomiendo usar "fondo: blanco" en lugar de "transparente" para #autocompletar. – personne3000

+0

creó un Jsfiddle para la respuesta anterior por guanome. Mira esto. https://jsfiddle.net/2tuo2hvn/4/ – akniazi

1

La entrada de búsqueda tiene ba transparente ckground, y hay otro campo de entrada deshabilitado detrás (con índice z más bajo), con el valor de sugerencia, por lo que en el campo desactivado solo se ve la parte gris (hay texto completo pero no se puede ver como las letras en la entrada principal de color negro).

Ambos están absolutamente posicionados en la misma posición.

Cuestiones relacionadas