2012-05-29 14 views
35

Attualmente sto lavorando al mio script di completamento automatico/suggerimento e voglio ottenere un effetto simile su Google nel loro sito principale.Come implementare un campo di input simile al suggerimento di Google?

Quando l'utente inizia a digitare (ad esempio stack), 4 suggerimenti vengono visualizzati in un elenco a discesa in basso ma ... anche, allo stesso tempo quello in alto mostra "in" il campo di input in grigio :

Screenshot

Come sarebbe possibile mettere in un'altra stringa di input con uno stile diverso?

È un valore <span> con il valore maggiore z-index? Quando clicco sulla parte grigia della stringa, il campo di input non ottiene il focus, quindi credo che qualcosa debba esserci sopra.

Se infatti si tratta di un <span> (o altro <div>) seduta sull'ingresso allora come sanno dove la prima parte della stringa (stack) termina e dove posizionare (larghezza) la parola overflow (in questo caso).

Qualcuno sa come ottenere questo effetto?

risposta

44

Dopo aver ispezionato il codice, ho scoperto che si tratta di un campo input sopra un altro campo input. Il campo input con completamento automatico è impostato su disattivato, assegnandogli il colore grigio.

Utilizzando questo metodo non è necessario calcolare dove finisce la stringa come si è detto sopra, posizionare assolutamente il campo effettivo input sul campo autocllet input.

Esempio: enter image description here

Aggiornamento

Ecco un breve demo http://jsfiddle.net/dargf/
Naturalmente, si dovrà aggiungere nel proprio javascript completamento automatico, ma questo è un esempio dello stile .

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

Si noti che questo non funziona correttamente con IE10, IE9 e probabilmente tutte le versioni successive a 11. Provato con IETester e modificando la "modalità documento" in IE11. Google non sembra visualizzare il secondo campo di input in IE (anche IE11, sebbene funzioni) – personne3000

+0

Per farlo funzionare in IE10- (vedere http://stackoverflow.com/questions/15662687/ie10-anchor-tag-z- indice-problema), utilizzare "background: rgba (0,0,0,0)" per #main anziché "transparent"; Raccomando anche di usare "background: white" invece di "transparent" per #autocomplete. – personne3000

+0

ha creato un Jsfiddle per la risposta di cui sopra da guanome. Controllalo. https://jsfiddle.net/2tuo2hvn/4/ – akniazi

1

L'ingresso di ricerca ha ba trasparente ckground, e c'è un altro campo di input disabilitato dietro (con lo z-index più basso), con il valore del suggerimento, quindi in campo disabilitato si vede solo la parte grigia (c'è del testo completo ma non può essere visto come le lettere nell'ingresso principale ha colore nero).

Entrambi sono posizionati in modo assoluto nella stessa posizione.