2012-12-29 34 views
13

ho questo codice:Jquery completamento automatico Disattiva in ingresso

il codice HTML:

<input id="register_username" type="text"> 
<input id="register_password" type="text"> 
<input id="register_repeatpassword" type="text"> 
<input id="register_email" type="text"> 

jQuery:

$(document).ready(function(){ 
    $('#register_username').attr('autocomplete','off'); 
    $('#register_password').attr('autocomplete','off'); 
    $('#register_repeatpassword').attr('autocomplete','off'); 
    $('#register_email').attr('autocomplete','off'); 
    }); 

Voglio disattivare la funzione di completamento automatico Difred da alcuni browser e acctually fai in modo che l'utente digiti l'intero campo ma il codice non funziona, il menu a discesa viene comunque visualizzato e l'utente può ancora scegliere le cose digitate in precedenza. Ho anche provato ad usare l'utente autocomplete="off" ma non è successo nulla. Cosa sto facendo di sbagliato qui?

+1

[funziona sulla mia macchina] (http://www.codinghorror.com/blog/2007/03/the-works-on-my-machine-certification-program.html) (tm) –

+1

Per me il autocomplete = "off" viene ignorato su Chrome (v 41.0.2272.89), pensavo che fosse perché stavo cambiando l'attributo via jquery dopo che la pagina è stata caricata, ma anche l'inserimento di 'autocomplete =" off "' direttamente sull'ingresso non ha risolto il problema. Questo altro [post] (http://stackoverflow.com/questions/12374442/chrome-browser-ignoring-autocomplete-off) potrebbe essere correlato al problema. –

risposta

23

Basta aggiungere:

autocomplete="off" 

come attributi al INPUT elementi, f.ex:

<input autocomplete="off" id="register_username" type="text" name="username"> 
+1

o anche il nodo '

'. (Credo che il problema di root sia che non sembra funzionare se applicato post-load da jQuery poiché OP sta aggiungendo questo stesso attributo). –

+2

L'ho provato e non ha funzionato. –

+0

@MaxPain quale browser? Puoi pubblicare un violino? – David

2

Anche se sono d'accordo, autocomplete="off" dovrebbero essere ampiamente sostenuto ed è la soluzione finale, ma non funziona può essere il risultato di HTML5 spec on the autocomplete attribute:

Il meccanismo di completamento automatico deve essere imp attenuato dall'agente utente che agisce come se l'utente avesse modificato il valore dell'elemento e deve essere eseguito in un momento in cui l'elemento è mutabile (ad es. subito dopo che l'elemento è stato inserito nel documento o quando l'interprete interrompe l'analisi).

Questo, per me, implica che dovrebbe essere un attributo "originale" dell'elemento e non può essere aggiunto dopo il rendering. E poiché la maggior parte dei browser sta implementando la nuova specifica , è probabile che lo abbiano consentito con javascript prima che abbiano probabilmente corretto l'implementazione in base alle specifiche di cui sopra.

Se non lo hai già fatto, prova ad aggiungere l'attributo direttamente ai controlli invece di fare affidamento su jQuery facendo così [presumibilmente] pronto per il documento.

Io uso spec losely qui dal HTML5 non è uno standard, ma un sacco di browser stanno implementando alcune delle caratteristiche più concreti. Dal autocomplete esiste da IE5, è probabilmente uno di quelli che è possibile considerare un'implementazione sicura.

+0

Ho provato a fare questo: ' 'e hanno ancora lo stesso problema. –

+0

@MaxPain: con qualsiasi modifica, se si passa a 'about: config' è impostato set [Wallet.crypto.autocomoveroverride] (http://kb.mozillazine.org/Wallet.crypto.autocompleteoverride)? –

+0

Non sono sicuro di cosa si tratta. Immagino di no. –

5

controllo questo fiddle out

document.getElementById("register_username").autocomplete="off" 
10

Il jQuery versione:

$("#register_username").attr("autocomplete", "off"); 
+1

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. – Tenfour04

+0

È uguale a tutte le altre risposte, tranne che utilizza jQuery, che è tutto ciò che afferma di fare. –

+0

L'OP ha chiesto cosa c'era di sbagliato nel proprio codice, non per metodi alternativi di farlo. Anche alcune delle altre risposte non rispondono alla domanda dell'OP, ma la coda del revisore non presenta tutte le risposte da rivedere contemporaneamente. – Tenfour04

1
<form id='myForm'> 
    <input id="register_username" type="text"> 
    <input id="register_password" type="text"> 
    <input id="register_repeatpassword" type="text"> 
    <input id="register_email" type="text"> 
</form> 
$(document).ready(function(){ 
    $('#myForm').on('focus', ':input', function(){ 
     $(this).attr('autocomplete', 'off'); 
    }); 
}); 
-1

utilizzando jQuery, io fare questo in un layout di pagina, o un po 'di HTML che verrà essere presente su ogni pagina del sito.

$(document).ready(function() { 

     //when the page is done loading, disable autocomplete on all inputs[text] 
     $('input[type="text"]').attr('autocomplete', 'off'); 

     //do the same when a bootstrap modal dialog is opened 
     $(window).on('shown.bs.modal', function() { 
      $('input[type="text"]').attr('autocomplete', 'off'); 
     }); 
}); 
Problemi correlati