2009-12-18 14 views
20

¿Es posible desactivar de forma selectiva la función de autocompletar en los campos de texto mediante el código?¿Cómo se desactiva el autocompletado en las entradas de texto del navegador de forma selectiva a través del código?

Estoy desarrollando mi código personalizado en ASP.Net AJAX para buscar la sugerencia en la base de datos y me gustaría evitar que las sugerencias del navegador aparezcan cuando el usuario comienza a escribir en el cuadro de texto.

Estoy buscando una solución que funcione en los navegadores más modernos (IE 7 & 8, Firefox, Safari y Chrome). Está bien si la solución está en Javascript.

Respuesta

29

Mire el atributo HTML de autocompletar (en etiquetas de formulario o de entrada).

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

W3C > Autocomplete attribute

Editar:

Hoy en día - a partir de los comentarios - navegadores web no siempre respetan el comportamiento definido etiqueta de autocompletar. Esta falta de respeto podría estar rodeada de un poco de código JavaScript, pero debes pensar en lo que quieres hacer antes de usar esto.

En primer lugar, los campos se llenarán durante la carga de la página y solo se vaciarán una vez que se cargue la página. Los usuarios se preguntarán por qué el campo se ha vaciado.

En segundo lugar, esto restablecerá otros mecanismos del navegador web, como el relleno automático de un campo cuando regrese a la página anterior.

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

Esto no funciona en Chrome. – Cerin

+0

'autocomplete' ahora es ignorado por todos menos los navegadores más obsoletos/obsoletos –

+0

Esto ya no es una solución viable. – Nugs

4

Agregar un atributo autocomplete=off al elemento html input debería hacer eso.

10

se puede poner en tus entradas:

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

o en jQuery

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

Añadir la AutoCompleteType="Disabled" a su cuadro de texto

+4

Eso solo funcionará con IE y no con los otros navegadores. – Rutix

1

Esto debería funcionar en todos los navegadores

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

Hay 2 soluciones para este problema. He probado el siguiente código en Google Chrome v36. recientes versión de Google Chrome fuerzas Llenado automático con independencia de la Autocomplete=off .Algunos de los cortes anteriores ya no funcionan (34+ versiones)

Solución 1:

Coloca el siguiente código en la etiqueta bajo <form ..>.

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

... 

Read more

Solución 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); 
      }); 

Se elimina "nombre" y "id" atributos de los elementos y los asigna de vuelta después de 1 ms.

+0

Este es el único método que funciona actualmente, otras respuestas están desactualizadas. –

0

Mi solución es hacer que el campo de contraseña un cuadro de texto normal, a continuación, utilizando jQuery para convertirlo en campo de la contraseña en el foco:

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