2015-09-25 12 views
8

Ho creato un componente AngularJS a discesa per casella di testo che funziona perfettamente in Chrome, Firefox, Safari e Internet Explorer.Disabilitare i suggerimenti di testo di input in Edge?

Una caratteristica di questo componente è che si digita una stringa e che quindi è possibile utilizzare i tasti freccia su/giù per scorrere i suggerimenti.

In Microsoft Edge, non appena si preme la freccia verso il basso, il testo seguente è aggiunto alla casella di input:

spiegare brevemente le modifiche (ortografia corretta, grammatica fisso, una migliore formattazione)

C'è qualcosa che posso fare al lato client per impedire che ciò accada?

<form> 
 
    <input type="text" />  
 
</form>

A dimostrazione di ciò, eseguire lo Snipper sopra, digita qualcosa nella casella di testo e ha colpito la freccia giù due volte sul bordo. Voglio che questo non accada, perché sta rompendo il mio completamento automatico!

Grazie

+0

Si sta utilizzando un input? In caso contrario, che tipo di elemento stai usando? Stai cercando di risolvere questo problema in qualsiasi modo possibile o con una soluzione Angular.js? – rockmandew

+0

Un input di testo standard di bog, per creare il componente, può postare del codice se lo si desidera? – JMK

+0

Inoltre, non sono sicuro di cosa sia un testo di input standard "palude" da essere completamente onesto. Suppongo che fosse un refuso e stai solo parlando di un normale inserimento di testo. Si prega di inviare il codice e seguirò. Presumo che si tratti di una semplice soluzione di impostazione "autocomplete". – rockmandew

risposta

21

Se ho capito bene, si stanno avendo un problema con il funzione di completamento automatico. Semplice aggiungi "autocomplete = 'off'" al tuo input e questo dovrebbe disabilitare la funzione.

<input type="text" autocomplete="off"/> 
+0

Questo non funzionerà con nessun browser moderno. Prova ad usare i campi di esca. http://stackoverflow.com/a/2555771/317908 –

+1

Funziona per me in Edge, grazie! –

+0

In Edge, se si esegue il backspace e si elimina il contenuto dell'input, Edge mostrerà la casella di completamento automatico. Quindi, mentre questo attributo aiuta, non risolve il problema. – Brain2000

1

se ne avete bisogno app/a livello di sito è possibile utilizzare jQuery:

$('input').attr('autocomplete','off'); 

Oppure, se siete come me e con angolare + ui-router si potrebbe provare quanto segue:

Nel vostro index.html aggiungere il seguente script:

<script type="text/javascript"> 
    setTimeout(function() { 
     $('input').attr('autocomplete', 'off'); 
    }, 2000); 
</script> 

Poi per coprire i cambiamenti di stato, aggiungere il seguente al controllore principale:

$rootScope.$on('$stateChangeStart', function() { 
       $timeout(function() { 
        $('input').attr('autocomplete', 'off'); 
       }, 2000); 
      }); 

I timeout sono per il codice HTML per rendere prima di applicare il jQuery.

Se trovi una soluzione migliore per favore fammelo sapere.

4

Da Mozilla: È possibile impostare il completamento automatico sull'attuale tag del modulo <form autocomplete='off' ... >...</form> che funzionerà per l'intero modulo o sui singoli tag <input type='text' />.

Nella mia esperienza su IE 11 e Edge inserendolo nel modulo funziona ma i singoli tag non funzionano. Ho provato a provare su Chrome ma i campi non erano già in fase di completamento automatico.

Si prega di leggere l'intero Article per informazioni più dettagliate.

NOTA

maggior parte dei browser ignorare questo per campi di accesso.

+1

Questo va bene come risposta, evviva! – JMK

+0

In Edge ha funzionato solo quando messo su una forma, non singoli elementi, grazie –