2009-12-18 18 views
20

È possibile disattivare selettivamente la funzione di riempimento automatico nei campi di testo utilizzando il codice?Come disabilitare la compilazione automatica nel testo del browser immette in modo selettivo tramite codice?

Sto sviluppando il mio codice personalizzato in ASP.Net AJAX per cercare il suggerimento nel database e vorrei evitare che i suggerimenti del browser vengano visualizzati quando l'utente inizia a digitare nella casella di testo.

Sto cercando una soluzione che funzioni nei browser più moderni (IE 7 & 8, Firefox, Safari e Chrome). È ok se la soluzione alternativa è in Javascript.

risposta

29

Vedere l'attributo HTML di completamento automatico (nei tag modulo o di input).

<form [...] autocomplete="off"> [...] </form> 

W3C > Autocomplete attribute

Edit:

Al giorno d'oggi - dai commenti - browser web non sempre rispettano il comportamento definito tag di completamento automatico. Questo non rispetto potrebbe essere circondato da un po 'di codice JavaScript, ma dovresti pensare a ciò che vuoi fare prima di usarlo.

Innanzitutto, i campi verranno riempiti durante il caricamento della pagina e verranno svuotati solo dopo il caricamento della pagina. Gli utenti si chiederanno perché il campo è stato svuotato.

In secondo luogo, questo ripristinerà altri meccanismi del browser Web, come la compilazione automatica di un campo quando si torna alla pagina precedente.

jQuery(function() 
 
{ 
 
    $("input[autocomplete=off]").val(""); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form method="post" action=""> 
 
    <div class="form-group"> 
 
    <label for="username">Username</label> 
 
    <input type="text" id="username" name="username" value="John" autocomplete="off"> 
 
    </div> 
 
    <div class="form-group"> 
 
    <label for="password">Password</label> 
 
    <input type="password" id="password" name="password" value="qwerty" autocomplete="off"> 
 
    </div> 
 
    <input type="submit" value="Login"> 
 
</form>

+5

Questo non funziona in Chrome. – Cerin

+0

'autocomplete' è ora ignorato da tutti tranne i browser più obsoleti/obsoleti –

+0

Questa non è più una soluzione valida. – Nugs

4

L'aggiunta di un attributo all'elemento HTML input dovrebbe farlo.

10

si può mettere in ingressi:

<input type="text" name="off" autocomplete="off"> 

o in jquery

$(":input").attr("autocomplete","off"); 
0

Aggiungere il AutoCompleteType="Disabled" alla vostra casella di testo

+4

Funzionerà solo con IE e non con gli altri browser. – Rutix

1

questo dovrebbe funzionare in tutti i browser

<script type="text/javascript"> 
     var c = document.getElementById("<%=TextBox1.ClientID %>"); 
     c.select = 
     function (event, ui) 
     { this.value = ""; return false; } 
    </script> 
4

Ci sono 2 soluzioni per questo problema. Ho testato il seguente codice su Google Chrome v36. versione di Google Chrome forze recenti Riempimento automatico indipendentemente dalla Autocomplete=off .Alcuni dei hack precedenti non funzionano più (34+ versioni)

Soluzione 1:

Put seguente codice sotto sotto <form ..> tag.

<form id="form1" runat="server" > 
<input style="display:none" type="text" name="fakeusernameremembered"/> 
<input style="display:none" type="password" name="fakepasswordremembered"/> 

... 

Read more

Soluzione 2:

$('form[autocomplete="off"] input, input[autocomplete="off"]').each(function() { 

       var input = this; 
       var name = $(input).attr('name'); 
       var id = $(input).attr('id'); 

       $(input).removeAttr('name'); 
       $(input).removeAttr('id'); 

       setTimeout(function() { 
        $(input).attr('name', name); 
        $(input).attr('id', id); 
       }, 1); 
      }); 

Rimuove "nome" e "id" attributi da elementi e li assegna indietro dopo 1ms.

+0

Questo è l'unico metodo attualmente funzionante, altre risposte sono obsolete. –

0

mia soluzione è quella di rendere il campo password una casella di testo normale, quindi utilizzando jQuery per trasformarlo in campo password a fuoco:

asp:TextBox runat="server" ID="txtUsername" /> 
<asp:TextBox runat="server" ID="txtPassword" /> 
<script> 
    $("#txtPassword").focus(function() { 
     $("#txtPassword").prop('type', 'password'); 
    }); 
</script> 
Problemi correlati