Bonjour !

J'ai parcouru plusieurs forums dans l'espoir de résoudre un problème qui commence à me les ... 'fin voilà, quoi.

Le problème en question est l'autocomplete des inputs sur Chrome. (J'ai pas eu le cœur de vérifier sur les autres navigateurs, j'suis pas maso non plus ...)

Alors, oui, évidemment, j'ai déjà, sur chaque input, ajouté l'attribut autocomplete="off". Et autant en local, ça marche impec' (sur Chrome, en plus !), autant dés que je l'upload, bah nan, il veut pas. Et le pire c'est qu'il me balance l'autocomplete dans des champs qui n'ont rien à voir.

J'en ai remis une couche en jQuery, mais non, pas mieux. Comme dirait l'autre ... je suis très mal à l'aise.

Help, please ?

45 réponses


Syndrome
Auteur
Réponse acceptée

Ahahahahah, tu vas rire. :')

J'viens d'avoir une idée de grand malade ! Dans la mesure où l'inscription et la connexion sont gérées en Ajax via jQuery, je n'ai pas vraiment besoin d'avoir un formulaire à proprement parler, n'est ce pas ? (Question rhétorique évidemment.)

Du coup j'ai enlevé les balises <form> ... et du coup, ce gros c*n de Google Chrome ne voit rien autofiller !

MOUHAHAHAHAHAHAHA !

Merci de ton aide cela dit ! :)

ta fermer-relancer chrome ?
ta vérifier dans le code que autocomplete était à off ?

Syndrome
Auteur

J'avais déjà inspecté le code pour vérifier oui, et je viens de relancer Chrome, sans succès. :/

Essaye de mettre tout le formulaire en autocomplete="off":

<form autocomplete="off">
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="utf-8">
</head>
<body>
    <form action="" method="POST" autocomplete="off">
        <input type="text" name="login" autocomplete="off" />
    </form>
</body>
</html>

Fonctionne chez moi, et toi ?

EDIT: Ralf, dégage vall ! xD

Syndrome
Auteur

Nope, pas mieux. =/

Edit 1 : J'ai supprimé le mot de passe enregistré, et forcément, l'autocomplete a disparu. Je me suis reconnecté sur mon site, en acceptant la sauvegarde du mot de passe, et après avoir actualisé, il recommence. Il est pénible.

Question subsidiaire : si je donne des noms complètement sans rapport à mes champs, est-ce que ça peut jouer ?

Edit 2 : Je confirme que ça ne change rien. ><

Syndrome
Auteur

J'ai carrément viré les attributs name des mes inputs, dans la mesure où je fais inscription et connexion via jQuery / Ajax. Ça ne change rien. Ça me rend dingue. :')

Tu peux essayer d'ajouter un attribut value="", pour la forcer a etre blank, en plus des autocomplete="off"
@Glaived: Game's on

Syndrome
Auteur

Pas mieux =/

Syndrome
Auteur

Pour info, petite capture d'écran qui parlera sûrement mieux que tous les mots ...

ET ta couche de jQuery elle ressemble a quoi ?

Syndrome
Auteur

Pour l'autocomplete :

$("input[type='text'],input[type='password']").attr({autocomplete:"off"});

Tu veux le traitement du formulaire aussi ?

Non, je ne pense pas que ca change.
Plutot que d'utiliser jQuery pour ajouter l'attribut automplete a off, as-tu essayer de faire $.val('') ?

$( document ).ready(function(){
    $("input[type='text'],input[type='password']").val("");
});
Syndrome
Auteur

J'essaye tout de suite !

J'ai regarder coté JS, je donne ma langue à vall =/

Ah bah non, ca me plait la compétition, moi ^^

Syndrome
Auteur

Bon bah non, pas mieux ... :(

Syndrome
Auteur

Je vais tenter autre chose : un ajout des champs au chargement de la page, via jQuery. (Ouais, j'ai que ça à faire !)

En supposant que Chrome soit un peu lent pour faire son autofill, et donc que le $.val('') de jQuery soit plus rapide, tu peux ajouter un delay a ton jQuery pour virer les valeurs de champs après que Chrome est fait son autofill:

$( document ).ready(function(){
    setTimeout(function(e){
        $("input[type='text'],input[type='password']").val("");
    }, 1500);
});

En l'occurence il est de 1,5 sec, ce qui est bien trop long on est d'accord, mais au moins ca te dira si sur le principe ca peut marcher ou pas (et je ne vois pas du tout pourquoi ca ne marcherait pas, la ...). Essaye ensuite des trucs un peu plus courts (genre 200 ms).

Syndrome
Auteur

Toi t'es un p*tin de génie !

Bon ça marche qu'à moitié, mais ça marche. En l'occurrence, il me vide bien les champs, mais il leur laisse le style attribué par l'autofill de Chrome.

vois si tu peux jouer avec l'attribut css:

input:-webkit-autofill {
}
Syndrome
Auteur

J'ai essayé mais il ne le prend pas en compte. Ce qui est logique, d'ailleurs ! S'il trouve le moyen d'écraser mon css normal, il écrase aussi celui que je peux lui attribuer ! ^^

meme en ajoutant des !important a toutes tes lignes ?

Syndrome
Auteur

J'ai pas essayé tiens ...

Syndrome
Auteur

Non plus :(

Syndrome
Auteur

De toutes façons, il réagit pas avant 1000-1200ms.

J'en reviens à mon idée précédente, une création du formulaire en jQuery. :)

la création, ou (plus simple ?) son chargement en ajax avec $.load() ...

Syndrome
Auteur

J'ai peur qu'un simple chargement ne suffise pas, mais je vais commencer ça par ça, tu as raison ! :)

Au pire, pour ca tu peux attendre 1,5 secondes avant de lancer ton chargement pour éviter l'autofill (avec un petit loader pour faire patienter ...).

Syndrome
Auteur

Ça se tente ! J'sais pas toi mais moi j'suis là jusqu'à 6h, donc je te tiens au courant o/

Moi je suis outre-Atlantique ... donc j'irai me coucher après toi sans doute ^^

Syndrome
Auteur

Ca, ça reste à voir ! Outre-Atlantique, oui mais où ? :) Il est quelle heure chez toi là ?

19h27 ...

Syndrome
Auteur

Ah ouais. Bon, effectivement, dans 7h au plus je suis couché moi ...

Bon, ca marche ton truc ? Ca sert a rien de faire nuit blanche si t'avance pas, de toute facon :p

Syndrome
Auteur

Pas encore, mais j'ai pas eu le temps de tout faire ...

Je fais pas nuit blanche, je suis au boulot ! :D

Rassures-moi, t'es pas en France non plus j'espère !?

Syndrome
Auteur

Euh bah ... si ...

Syndrome
Auteur

Le load() n'empêche pas l'autofill. Il est foutrement intrusif ce con d'autofill !

Meme avec un setTimeout ? ... J'ai peur d'arriver au bout de mes solutions potentielles ... (qui ne fonctionnent pas de toute facon je te l'accorde ...).

Syndrome
Auteur

:'D

J'aime pas la solution du setTimeout (sans vouloir t'offusquer mon ami), ça rend vraiment pas top.

Par contre, j'ai avancé sur mon idée de créer les champs en jQuery, je leur ai donné un id type "id"+timestamp, et ça fonctionne niquel. :)

Qu'est ce qui te choquait dans le fait que je sois en métropole ?

Si ton truc en jQuery ne fonctionne pas, et si tu veux vraiment enfler chrome, j'ai peut-etre une solution tordue, pour toi:

1- Mets tes inputs en hidden.

2- A leur place, pour l'utilisateur, mets des div en contenteditable="true", que tu peux customiser comme tu veux pour qu'elle soient visuellement identiques a tes input originaux.

3- Dans ton css, tu peux meme mettre -webkit-text-security: disc; pour que ca mime l'input du password.

4- Au moment de la soumission du formulaire, si c'est de l'ajax tu t'emmerde pas, tu passes le contenu de tes div directement avec un $.text() (auquel cas pas besoin de tes inputs hidden, en fait), si c'est par rechargement de la page que tu envoies le formulaire, alors il faut simplement passer le contenu de tes div dans tes inputs avants de valider la soumission ...

Et alors la, si chrome te fait de l'autofill ... vraiment je ne saurai plus quoi dire ^^

C'est tes horaires qui me font compatir ... il est 3h du mat en France :( ...
enfin je dis ca mais en meme temps peut-etre que ca te plait, toi ... tu bosses dans quoi ?

Syndrome
Auteur

Effectivement, solution totalement faisable, que je fasse mon envoi en Ajax ou envoi de formulaire ... Quand je pense que t'as cherché ça pour rien ... :D

Je suis réceptionniste de nuit, et non, je n'aime vraiment VRAIMENT pas ça. Mais ça paye les factures, et comme tu peux le constater, ça me laisse suffisamment de temps pour bosser sur ce qui m'intéresse : coder. :)

OK, GG, j'avais pas du tout pensé a ca ! C'était fun de chercher ^^

Bon courage pour le reste de ta nuit ... et bonne continuation pour ton code ;)

Syndrome
Auteur

C'est surtout fun d'avoir trouvé ... :p

Merci à toi pour ton aide, mine de rien, ça m'a aidé de ne pas me sentir seul ! :)

Bon courage à toi pour ... ce que tu veux, et bonne continuation pour ton code aussi. :) Au plaisir de revenir te demander de l'aide et/ou de t'aider, on sait jamais ... J'suis moins mauvais que j'en ai l'air :p