Chrome ignore autocomplete= " off"

j'ai créé une application web qui utilise une boîte de dialogue. Cela fonctionne très bien dans tous les navigateurs sauf le navigateur Chrome (Version 21.0.1180.89).

malgré les deux champs input et le champ form ayant l'attribut autocomplete="off" , Chrome insiste pour montrer une chute vers le bas de l'histoire des entrées précédentes pour le champ, qui oblitère la liste de tagbox.

279
demandé sur Alexander Abakumov 2012-09-11 20:54:31

30 réponses

mise à JOUR

il semble maintenant que Chrome ignore les attributs style="display: none;" ou style="visibility: hidden; .

vous pouvez le changer en quelque chose comme:

<input style="opacity: 0;position: absolute;">
<input type="password" style="opacity: 0;position: absolute;">

D'après mon expérience, Le Chrome ne remplace que le premier <input type="password"> et le précédent <input> . J'ai donc ajouté:

<input style="display:none">
<input type="password" style="display:none">

en haut du <form> et l'affaire a été résolue.

mise à Jour

s'il vous Plaît jeter un oeil sur https://github.com/terrylinooo/jquery.disableAutoFill

ce plugin va randomiser l'attribut input name par défaut. Il rétablira le nom du champ original lors de la soumission du formulaire. Ceci est pour empêcher l'achèvement automatique pour tous les navigateurs (y compris les extensions auto-completeion de tiers) pas seulement pour Google Chrome.

288
répondu Diogo Cid 2018-10-04 15:36:34

empêcher autocomplete de nom d'utilisateur (ou email) et mot de passe:

<input type="email" name="email"><!-- Can be type="text" -->
<input type="password" name="password" autocomplete="new-password">

empêcher l'autocomplétion d'un champ ( pourrait ne pas fonctionner ):

<input type="text" name="field" autocomplete="nope">

explication:

autocomplete fonctionne toujours sur un <input> malgré avoir autocomplete="off" , mais vous pouvez changer off à une chaîne aléatoire, comme nope .


Autres des "solutions", pour désactiver la saisie semi-automatique d'un champ (c'est pas la bonne façon de le faire, mais il fonctionne):

1.

HTML:

<input type="password" id="some_id" autocomplete="new-password">

JS (onload):

(function() {
    var some_id = document.getElementById('some_id');
    some_id.type = 'text';
    some_id.removeAttribute('autocomplete');
})();

ou en utilisant jQuery:

$(document).ready(function() {
    var some_id = $('#some_id');
    some_id.prop('type', 'text');
    some_id.removeAttr('autocomplete');
});

2.

HTML:

<form id="form"></form>

JS (onload):

(function() {
    var input = document.createElement('INPUT');
    input.type = 'text';
    document.getElementById('form').appendChild(input);
})();

ou en utilisant jQuery:

$(document).ready(function() {
    $('<input>', {
        type: 'text'
    }).appendTo($('#form'));
});

pour ajouter plus d'un champ en utilisant jQuery:

function addField(label) {
  var div = $('<div>');
  var input = $('<input>', {
    type: 'text'
  });
  
  if(label) {
    var label = $('<label>', {
      text: label
    });
    
    label.append(input);
    div.append(label);    
  } else {
    div.append(input);    
  }  
  
  div.appendTo($('#form'));
}

$(document).ready(function() {
  addField();
  addField('Field 1: ');  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form"></form>

Travaille:

  • Chrome: 49+

  • Firefox: 44+

164
répondu Cava 2018-08-29 14:24:01

il semble que Chrome ignore maintenant autocomplete="off" à moins qu'il ne soit sur le <form autocomplete="off"> étiquette.

121
répondu ice cream 2013-04-21 11:03:21

pour une solution fiable, vous pouvez ajouter ce code à votre page de mise en page:

<div style="display: none;">
 <input type="text" id="PreventChromeAutocomplete" 
  name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>

Chrome respecte autocomplete=off seulement lorsqu'il y a au moins un autre élément d'entrée dans la forme avec toute autre valeur autocomplete.

cela ne fonctionnera pas avec les champs de mot de passe--ceux-ci sont traités très différemment dans Chrome. Voir https://code.google.com/p/chromium/issues/detail?id=468153 pour plus de détails.

mise à jour: Bug closed as" Won't Fix " par Chromium Team le 11 mars 2016. Voir le dernier commentaire dans mon rapport de bogue déposé à l'origine , pour une explication complète. TL; DR: utilisez des attributs sémantiques autocomplètes tels que autocomplete= "new-street-address" pour éviter que Chrome ne fasse de l'autofill.

60
répondu J.T. Taylor 2016-11-25 11:47:55

Approche Moderne De La

faites simplement votre entrée readonly , et sur focus, supprimez-la. C'est une approche très simple et les navigateurs ne rempliront pas les entrées readonly . Par conséquent, cette méthode est acceptée et ne sera jamais écrasée par de futures mises à jour de navigateur.

<input type="text" onfocus="this.removeAttribute('readonly');" readonly />

Style votre entrée en conséquence de sorte qu'il ne ressemble pas à un readonly entrée

input[readonly] {
     cursor: text;
     background-color: #fff;
}

WORKING Exemple

34
répondu Fizzix 2017-04-25 23:09:02

Chrome la version 34 ignore maintenant le autocomplete=off , voir ce .

Beaucoup de discussion , si c'est une bonne chose ou une mauvaise chose? Quel est votre point de vue?

32
répondu Peter Kerr 2016-11-25 11:48:42

la solution actuelle est d'utiliser type="search" . Google n'applique pas autofill aux entrées avec un type de recherche.

voir: https://twitter.com/Paul_Kinlan/status/596613148985171968

mise à jour 04/04/2016: on dirait que c'est fixe! Voir http://codereview.chromium.org/1473733008

27
répondu Nathan Pitman 2016-04-14 13:53:28

Eh bien, un peu tard pour la fête, mais il semble qu'il ya un peu de malentendu sur la façon dont autocomplete devrait et ne devrait pas fonctionner. Selon les spécifications HTML, L'agent utilisateur (dans ce cas Chrome) peut remplacer autocomplete :

https://www.w3.org/TR/html5/forms.html#autofilling-form-controls:-the-autocomplete-attribute

Un agent utilisateur peut permettre à l'utilisateur de remplacer une le nom du champ auto-remplir de l'élément, par exemple pour le changer de "off" à "on" pour permettre aux valeurs d'être mémorisées et pré-remplies malgré les objections de l'auteur de la page, ou pour toujours "off", ne se souvenant jamais des valeurs. Cependant, les agents utilisateurs ne devraient pas permettre aux utilisateurs de surcharger le nom du champ auto-remplir de "off" à "on" ou d'autres valeurs, car il y a des implications importantes pour la sécurité de l'utilisateur si toutes les valeurs sont toujours mémorisées, quelles que soient les préférences du site.

donc dans le cas de Chrome, les développeurs ont essentiellement dit "Nous laisserons cela à l'utilisateur de décider dans leurs préférences s'ils veulent que autocomplete fonctionne ou non. Si vous ne le voulez pas, ne pas l'activer dans votre navigateur.

cependant, il semble que c'est un peu trop zélé de leur part à mon goût, mais c'est comme ça. La spécification traite également des répercussions possibles d'un tel déménagement sur la sécurité:

le mot-clé " off " indique soit que les données d'entrée du contrôle sont particulièrement sensibles (par exemple le code d'activation pour une arme nucléaire), soit qu'il s'agit d'une valeur qui ne sera jamais réutilisée (par exemple une clé unique pour une connexion bancaire) et que l'Utilisateur devra donc entrer explicitement les données à chaque fois, au lieu de pouvoir s'appuyer sur L'UA pour remplir la valeur à sa place; ou que le document fournit son propre mécanisme autocomplet et ne veut pas que l'agent utilisateur indiquer les valeurs d'autocomplétion.

donc après avoir éprouvé la même frustration que tout le monde, j'ai trouvé une solution qui fonctionne pour moi. Elle est similaire aux réponses autocomplete="false" .

un article de Mozilla parle exactement de ce problème:

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

dans certains cas, le navigateur continuera de suggérer des valeurs d'autocomplétion même si l'attribut autocompléte est désactivé. Ce comportement inattendu peut être assez déroutant pour les développeurs. Le truc pour vraiment forcer le non-achèvement est d'attribuer une chaîne aléatoire à l'attribut

donc le code suivant devrait travailler:

autocomplete="nope"

ainsi que chacun des éléments suivants:

autocomplete="false"
autocomplete="foo"
autocomplete="bar"

la question que je vois est que l'agent de navigateur pourrait être assez intelligent pour apprendre l'attribut autocomplete et l'appliquer la prochaine fois qu'il voit la forme. Si il fait cela, la seule façon que je peux voir pour toujours contourner le problème serait de modifier dynamiquement le autocomplete valeur de l'attribut lorsque la page est généré.

un point à mentionner est que de nombreux navigateurs ignoreront les paramètres autocomplete pour les champs de connexion (nom d'utilisateur et mot de passe). Comme l' L'article de Mozilla dit:

pour cette raison, de nombreux navigateurs modernes ne prennent pas en charge autocomplete=" off " pour les champs de connexion.

  • si un site définit autocomplete= " off " pour un formulaire, et que le formulaire inclut les champs d'entrée de nom d'utilisateur et de mot de passe, alors le navigateur offrira toujours de se souvenir de cette connexion, et si l'utilisateur est d'accord, le navigateur autofillera ces champs la prochaine fois que l'utilisateur visite cette page.
  • si un site définit autocomplete=" off " pour les champs d'entrée de nom d'utilisateur et de mot de passe, alors le navigateur offrira toujours de se souvenir de ce login, et si l'utilisateur est d'accord, le navigateur autofillera ces champs la prochaine fois que l'utilisateur visite cette page.

C'est le comportement dans Firefox (depuis la version 38), Google Chrome (depuis 34), et Internet Explorer (depuis la version 11).

enfin un peu d'info sur si le l'attribut appartient à l'élément form ou à l'élément input . Le spec a de nouveau la réponse:

si l'attribut autocomplete est omis, la valeur par défaut correspondant à l'état de l'attribut autocomplete du propriétaire de forme de l'élément est utilisée à la place (soit" on "ou"off"). S'il n'y a pas de propriétaire de formulaire, alors la valeur "on" est utilisée.

So. L'inscrire sur le formulaire devrait s'appliquer à tous les champs d'entrée. Le mettre sur un élément individuel devrait s'appliquer uniquement à cet élément (même s'il n'y en a pas sur le formulaire). Si autocomplete n'est pas défini du tout, il est par défaut on .

résumé

désactiver autocomplete sur l'ensemble de la forme:

<form autocomplete="off" ...>

Ou si vous dynamiquement besoin de le faire:

<form autocomplete="random-string" ...>

désactiver autocomplete sur un élément individuel (indépendamment du fait que le formatage soit présent ou non)

<input autocomplete="off" ...>

Ou si vous dynamiquement besoin de le faire:

<input autocomplete="random-string" ...>

et rappelez-vous que certains agents utilisateurs peuvent outrepasser même vos plus dures tentatives de désactiver autocomplete .

27
répondu Hooligancat 2016-05-25 05:55:06

le navigateur ne se soucie pas d'autocomplete=off auto ou remplit même des informations d'identification au mauvais champ de texte?

Je l'ai corrigé en paramétrant le champ Mot de passe en lecture seule et en l'activant lorsque l'utilisateur clique dessus ou utilise la touche tab pour ce champ.

fix navigateur de saisie automatique dans: readonly et définir writeble sur focus (au clic de la souris et de la tabulation à travers les champs)

 <input type="password" readonly  
     onfocus="$(this).removeAttr('readonly');"/>

Mettre: Le Safari Mobile place le curseur sur le terrain, mais n'affiche pas le clavier virtuel. Le nouveau correctif fonctionne comme avant mais gère le clavier virtuel:

<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
    this.removeAttribute('readonly');
    // fix for mobile safari to show virtual keyboard
    this.blur();    this.focus();  }" />

Live Demo https://jsfiddle.net/danielsuess/n0scguv6 /

/ / UpdateEnd

Par ailleurs, plus d'informations sur mon observation:

Parfois je remarque ce comportement étrange sur Chrome et Safari, quand il y a des champs de mot de passe dans le même formulaire. je suppose que le navigateur recherche un champ de mot de passe pour insérer vos justificatifs d'identité enregistrés. Ensuite, il autofills username dans le champ textlike-input le plus proche , qui apparaît avant le champ password dans DOM (juste deviner en raison de l'observation). Comme le navigateur est la dernière instance et que vous ne pouvez pas le contrôler, parfois même autocomplete=off n'empêcherait pas de remplir en credentials dans les mauvais champs, mais pas le champ d'utilisateur ou de surnom.

19
répondu dsuess 2016-10-30 13:38:01

vous pouvez utiliser autocomplete="new-password"

<input type="email" name="email">
<input type="password" name="password" autocomplete="new-password">

Travaille:

  • Chrome: 53, 54, 55
  • Firefox: 48, 49, 50
12
répondu Steffi 2017-02-01 10:19:57

pour quiconque cherche une solution, je trouve enfin une solution.

Chrome n'obéit qu'à l'autocomplete= " off " si la page est une page HTML5 (j'utilisais XHTML).

j'ai converti ma page en HTML5 et le problème a disparu (facepalm).

8
répondu Mr Fett 2013-04-16 18:59:40

vu chrome ignorer le autocomplete="off" , je le résous avec une manière stupide qui utilise" fausse entrée "de tricher chrome pour le remplir au lieu de remplir le" vrai".

exemple:

<input type="text" name="username" style="display:none" value="fake input" /> 
<input type="text" name="username" value="real input"/>

Chrome remplira la "fausse entrée", et quand soumettre, le serveur prendra la valeur "réelle entrée".

8
répondu Chang 2014-05-05 08:09:10

je poste cette réponse pour apporter une solution à jour à ce problème. J'utilise actuellement GoogleChrome 49 et aucune réponse n'a été fournie pour celui-ci. Je suis également à la recherche d'une solution qui fonctionne avec d'autres navigateurs et versions précédentes.

mettez ce code au début de votre formulaire

<div style="display: none;">
    <input type="text" autocomplete="new-password">
    <input type="password" autocomplete="new-password">
</div>

alors, pour votre vrai champ de mot de passe, utilisez

<input type="password" name="password" autocomplete="new-password">

Comment cette réponse si cela ne fonctionne plus ou si vous obtenez un problème avec un autre navigateur ou une version.

homologué le:

  • Chrome: 49
  • Firefox: 44, 45
  • Edge: 25
  • Internet Explorer: 11
7
répondu Loenix 2016-03-10 19:31:33

jusqu'à la semaine dernière, les deux solutions ci-dessous semblaient fonctionner pour Chrome, IE et Firefox. Mais avec la sortie de la version 48 De Chrome (et toujours en 49), ils ne fonctionnent plus:

  1. la mention suivante au haut du formulaire:
<input style="display:none" type="text" name="fakeUsername"/>
<input style="display:none" type="password" name="fakePassword"/>
  1. ce qui suit dans l'élément d'entrée du mot de passe:

    autocomplete= " off "

Donc, pour corriger rapidement cette situation, j'ai d'abord essayé d'utiliser un hack majeur de la configuration initiale de l'élément password input à disabled, puis j'ai utilisé un setTimeout dans la fonction document ready pour l'activer à nouveau.

setTimeout(function(){$('#PasswordData').prop('disabled', false);}, 50);

mais cela semblait si fou et j'ai fait quelques recherches supplémentaires et trouvé la réponse de @tibalts dans désactivant Chrome Autofill . Sa réponse est d'utiliser autocomplete= "new-password" dans la saisie des mots de passe et cela semble fonctionner sur tous les navigateurs (I j'ai gardé mon correctif numéro 1 ci-dessus à ce stade).

voici le lien dans la discussion Google Chrome developer: https://code.google.com/p/chromium/issues/detail?id=370363#c7

6
répondu prajna 2017-05-23 12:34:54

au Lieu de autocomplete="off" utiliser autocomplete="false" ;)

de: https://stackoverflow.com/a/29582380/75799

5
répondu Basit 2017-05-23 12:18:28

autocomplete=off est largement ignoré dans les navigateurs modernes - principalement en raison des gestionnaires de mot de passe, etc.

vous pouvez essayer d'ajouter ce autocomplete="new-password" il n'est pas entièrement supporté par tous les navigateurs, mais il fonctionne sur certains

5
répondu Mahdi Afzal 2017-10-29 07:02:51

à partir de Chrome 42, aucune des solutions / hacks de ce thread (à partir de 2015-05-21T12:50:23+00:00 ) ne fonctionne pour désactiver l'autocomplete pour un champ individuel ou la forme entière.

EDIT: j'ai trouvé que vous n'avez en fait besoin d'insérer qu'un champ de messagerie factice dans votre formulaire (vous pouvez le cacher avec display: none ) avant les autres champs pour empêcher l'autocompleting. Je suppose que chrome stocke une sorte de signature de forme avec chaque champ autocompleted et inclure un autre champ email corrompt cette signature et empêche l'autocompleting.

<form action="/login" method="post">
    <input type="email" name="fake_email" style="display:none" aria-hidden="true">
    <input type="email" name="email">
    <input type="password" name="password">
    <input type="submit">
</form>

la bonne nouvelle est que puisque la "signature de forme" est corrompue par ceci, aucun des champs ne sont autocompleted, donc aucun JS est nécessaire pour nettoyer les faux champs avant la soumission.

Ancienne Réponse:

la seule chose que j'ai trouvé pour être encore viable est d'insérer deux champs factices de type email et mot de passe avant les vrais champs. Vous pouvez les définir à display: none pour les cacher (ce n'est pas assez intelligent d'ignorer ces champs):

<form action="/login" method="post">
    <input type="email" name="fake_email" style="display:none" aria-hidden="true">
    <input type="password" name="fake_password" style="display:none" aria-hidden="true">
    <input type="email" name="email">
    <input type="password" name="password">
    <input type="submit">
</form>

malheureusement, les champs doivent être dans votre forme (sinon les deux séries d'entrées sont remplies automatiquement). Donc, pour que les faux champs soient vraiment ignorés, vous aurez besoin de quelques JS à exécuter sur le formulaire submit pour les effacer:

form.addEventListener('submit', function() {
    form.elements['fake_email'].value = '';
    form.elements['fake_password'].value = '';
});

avis d'en haut qui effacer la valeur avec Javascript fonctionne pour outrepasser l'autocomplete. Donc, si perdre le comportement approprié avec JS désactivé est acceptable, Vous pouvez simplifier tout cela avec un js autocomplete "polyfill" pour Chrome:

(function(document) {

    function polyfillAutocomplete(nodes) {

        for(var i = 0, length = nodes.length; i < length; i++) {

            if(nodes[i].getAttribute('autocomplete') === 'off') {

                nodes[i].value = '';
            }
        }
    }

    setTimeout(function() {

        polyfillAutocomplete(document.getElementsByTagName('input'));
        polyfillAutocomplete(document.getElementsByTagName('textarea'));

    }, 1);

})(window.document);
4
répondu Bailey Parker 2015-05-21 13:03:04

Après le chrome v. 34, paramètre autocomplete="off" à <form> tag ne fonctionne pas

j'ai fait les changements pour éviter ce comportement ennuyeux:

  1. supprimer le name et le id de l'entrée de mot de passe
  2. mettez une classe dans l'entrée (ex.: passwordInput )

(Jusqu'à présent, Chrome n'a pas mis le mot de passe enregistré sur l'entrée, mais le formulaire est maintenant cassé)

enfin, pour faire fonctionner le formulaire, mettez ce code à exécuter lorsque l'utilisateur clique sur le bouton Soumettre, ou lorsque vous voulez déclencher la soumission du formulaire:

var sI = $(".passwordInput")[0];
$(sI).attr("id", "password");
$(sI).attr("name", "password");

dans mon cas, j'avais id="password" name="password" dans le mot de passe, donc je les ai remis avant de déclencher la submission.

3
répondu Renato Lochetti 2014-04-23 16:46:06

modifier l'attribut "input type" en type="search" .

Google ne pas appliquer auto-fill entrées avec un type de recherche.

3
répondu Matas Vaitkevicius 2015-10-28 16:29:33

je viens de mettre à jour à Chrome 49 et la solution de Diogo Cid ne fonctionne plus.

j'ai fait un contournement différent en cachant et en enlevant les champs à l'exécution après le chargement de la page.

Chrome ignore maintenant la solution de contournement d'origine en appliquant les références au premier champ affiché type="password" et son précédent champ type="text" , donc j'ai caché les deux champs utilisant CSS visibility: hidden;

<!-- HTML -->
<form>
    <!-- Fake fields -->
    <input class="chromeHack-autocomplete">
    <input type="password" class="chromeHack-autocomplete">

    <input type="text" placeholder="e-mail" autocomplete="off" />
    <input type="password" placeholder="Password" autocomplete="off" />
</form>

<!-- CSS -->
.chromeHack-autocomplete {
    height: 0px !important;
    width: 0px !important;
    opacity: 0 !important;
    padding: 0 !important; margin: 0 !important;
}

<!--JavaScript (jQuery) -->
jQuery(window).load(function() {
    $(".chromeHack-autocomplete").delay(100).hide(0, function() {
        $(this).remove();
    });
});

je sais que cela peut sembler pas très élégant, mais il fonctionne.

3
répondu Cliff Burton 2017-05-23 11:47:30

dans Chrome 48+ utilisez cette solution:

  1. mettez les faux champs avant les vrais champs:

    <form autocomplete="off">
      <input name="fake_email"    class="visually-hidden" type="text">
      <input name="fake_password" class="visually-hidden" type="password">
    
      <input autocomplete="off" name="email"    type="text">
      <input autocomplete="off" name="password" type="password">
    </form>
    
  2. Masquer les faux champs:

    .visually-hidden {
      margin: -1px;
      padding: 0;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      clip: rect(0, 0, 0, 0);
      position: absolute;
    }
    
  3. vous l'avez fait!

aussi cela fonctionnera pour les versions plus anciennes.

3
répondu yivo 2016-05-07 21:58:14

j'ai trouvé cette solution la plus appropriée:

function clearChromeAutocomplete()
{
// not possible, let's try: 
if (navigator.userAgent.toLowerCase().indexOf('chrome') >= 0) 
{
document.getElementById('adminForm').setAttribute('autocomplete', 'off'); 
setTimeout(function () {
        document.getElementById('adminForm').setAttribute('autocomplete', 'on'); 
}, 1500);
}
}

il doit être chargé après dom prêt, ou après le rendu de forme.

2
répondu user2241415 2013-06-13 16:19:08

alors que je suis d'accord autocomplete devrait être un choix de l'utilisateur, Il ya des moments où Chrome est trop zélé avec elle (d'autres navigateurs peuvent être trop). Par exemple, un champ de mot de passe avec un nom différent est toujours rempli automatiquement avec un mot de passe sauvegardé et le champ précédent rempli avec le nom d'utilisateur. Cela craint particulièrement quand le formulaire est un formulaire de gestion d'utilisateur pour une application web et vous ne voulez pas autofill pour le remplir avec vos propres justificatifs d'identité.

Chrome ignore complètement autocomplete="off" maintenant. Tandis que les hacks de JS peuvent bien fonctionner, j'ai trouvé une manière simple qui fonctionne au moment de l'écriture:

définit la valeur du champ password au caractère de contrôle 8 ( "\x08" en PHP ou &#8; en HTML). Cela empêche Chrome de remplir automatiquement le champ parce qu'il a une valeur, mais aucune valeur réelle n'est entrée parce que c'est le caractère backspace.

Oui c'est toujours un hack, mais ça marche pour moi. YMMV.

2
répondu spikyjt 2014-07-25 10:55:43

j'ai résolu d'une autre manière. Vous pouvez essayer cette.

<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
// Using jQuery
$(function(){                                               
    setTimeout(function(){
        $("input#passfld").attr("type","password");
    },10);
});


// or in pure javascript
 window.onload=function(){                                              
    setTimeout(function(){  
        document.getElementById('passfld').type = 'password';
    },10);
  }   
</script>
2
répondu SarwarCSE 2014-09-30 06:45:15

après avoir essayé toutes les solutions, voici ce qui semble fonctionner pour la version chrome:45, avec le formulaire ayant le champ de mot de passe:

 jQuery('document').ready(function(){
        //For disabling Chrome Autocomplete
        jQuery( ":text" ).attr('autocomplete','pre'+Math.random(0,100000000));
 });
2
répondu anshuman 2015-10-05 12:43:22

autocomplete="off" fonctionne maintenant. Testé dans le Chrome actuel 68.

Démo .

2
répondu Alexander Abakumov 2018-08-29 17:00:40

le truc de l'élément d'entrée caché semble toujours fonctionner (Chrome 43) pour empêcher le remplissage automatique, mais une chose à garder à l'esprit est que Chrome tentera de le faire à partir de la balise placeholder. Vous devez faire correspondre le placeholder de l'élément d'entrée caché à celui de l'entrée que vous essayez de désactiver.

dans mon cas, j'avais un champ avec un texte placeholder De 'Ville ou Zip' que J'utilisais avec Google Place Autocomplete. Il est apparu qu'il tentait de remplissage automatique comme s'il faisait partie d'un formulaire d'adresse. L'astuce n'a pas fonctionné jusqu'à ce que je mette le même paramètre sur l'élément caché que sur l'entrée réelle:

<input style="display:none;" type="text" placeholder="City or Zip" />
<input autocomplete="off" type="text" placeholder="City or Zip" />
1
répondu Sam 2015-06-29 21:00:25

j'ai eu un problème similaire où le champ d'entrée a pris soit un nom ou un email. J'ai mis autocomplete= " off " mais Chrome a quand même forcé les suggestions. Il s'avère que c'était parce que le texte du placeholder contenait les mots "name" et "email".

par exemple

<input type="text" placeholder="name or email" autocomplete="off" />

Je l'ai contourné en mettant un espace de largeur zéro dans les mots du placeholder. Plus de Chrome autocomplete.

<input type="text" placeholder="nam&#8203;e or emai&#8203;l" autocomplete="off" />
1
répondu WDuffy 2015-09-15 14:05:14

on dirait que c'est réparé! Voir https://codereview.chromium.org/1473733008

1
répondu Nathan Pitman 2016-04-04 09:47:26

lors de l'utilisation d'un widget comme jQuery UI Autocomplete assurez-vous de vérifier qu'il n'est pas l'ajout/modification de l'attribut autocomplete à off. J'ai trouvé que c'était vrai quand je l'utilisais et que cela casserait tout travail que vous pourriez avoir fait pour outrepasser n'importe quel cache de champ de navigateur. Assurez-vous que vous avez un attribut de nom unique et forcez un attribut d'autocomplete unique après que le widget initialise. Voir ci-dessous quelques conseils sur la façon dont cela pourrait fonctionner pour votre situation.

<?php $autocomplete = 'off_'.time(); ?>
<script>
   $('#email').autocomplete({
      create: function( event, ui ) {
         $(this).attr('autocomplete','<? echo $autocomplete; ?>');
      },
      source: function (request, response) { //your code here },
      focus: function( event, ui ) { //your code here },
      select: function( event, ui ) { //your code here },
   });
</script>
<input type="email" id="email" name="email_<? echo $autocomplete; ?>" autocomplete="<? echo $autocomplete; ?>" />
1
répondu SurferJoe 2017-12-20 23:02:06