J'ai 2 formulaires de base - connectez-vous et inscrivez-vous, tous deux sur la même page. Maintenant, je n'ai aucun problème avec le remplissage automatique du formulaire de connexion,mais le formulaire d'inscription se remplit également automatiquement, et je n'aime pas ça.
De plus, les styles de formulaire ont un arrière-plan jaune que je ne parviens pas à remplacer et je ne veux pas utiliser le CSS en ligne pour le faire. Que puis-je faire pour qu'ils cessent d'être colorés en jauneet (éventuellement) remplissage automatique? Merci d'avance!
Réponses:
pour l'auto-complétion, vous pouvez utiliser:
concernant le problème de coloration:
à partir de votre capture d'écran, je peux voir que le kit Web génère le style suivant:
1) comme # id-styles sont encore plus importants que les styles .class, ce qui suit peut fonctionner:
2) si cela ne fonctionne pas, vous pouvez essayer de définir le style via javascript par programmation
3) si cela ne fonctionne pas,
vous êtes condamné :-)considérez ceci: cela ne cachera pas la couleur jaune, mais rendra le texte à nouveau lisible.4) une solution css / javascript:
css:
et le javascript suivant doit être exécuté lors du chargement:
par exemple:
bonne chance :-)
5) Si aucune des solutions ci-dessus ne fonctionne, essayez de supprimer les éléments d'entrée, de les cloner, puis de replacer les éléments clonés sur la page (fonctionne sur Safari 6.0.3):
6) D' ici :
la source
code
var keepTheInputCloned = setInterval(function(){ var e = document.getElementById('id_email'); var ep = e.parentNode; ep.removeChild(e); var e2 = e.cloneNode(); ep.appendChild(e2); var p = document.getElementById('id_password'); var pp = p.parentNode; pp.removeChild(p); var p2 = p.cloneNode(); pp.appendChild(p2); },50); setTimeout(function(){clearInterval(keepTheInputCloned)},1000);
Trompez-le avec une ombre intérieure "forte":
la source
Ajoutez cette règle CSS et la couleur de fond jaune disparaîtra. :)
la source
Presque tous les navigateurs modernes respecteront cela.
la source
autocomplete
est qu'il est invalide en HTML avant la version 5.Après 2 heures de recherche, il semble que Google Chrome remplace toujours la couleur jaune, mais j'ai trouvé le correctif. Cela fonctionnera également pour le survol, la mise au point, etc. Tout ce que vous avez à faire est d'y ajouter
!important
.cela supprimera complètement la couleur jaune des champs de saisie
la source
Vous pouvez également modifier l'attribut de nom de vos éléments de formulaire pour qu'il soit généré afin que le navigateur n'en garde pas trace. CEPENDANT, firefox 2.x + et google chrome ne semblent pas avoir beaucoup de problèmes avec cela si l'URL de la requête est identique. Essayez d'ajouter un paramètre de demande de sel et un nom de champ de sel pour le formulaire d'inscription.
Cependant, je pense que la saisie semi-automatique = "off" est toujours la meilleure solution :)
la source
Vous pouvez désactiver la saisie semi-automatique à partir de HTML5 (via
autocomplete="off"
), mais vous NE POUVEZ PAS remplacer la mise en évidence du navigateur. Vous pouvez essayer de jouer avec::selection
CSS (la plupart des navigateurs nécessitent un préfixe de fournisseur pour que cela fonctionne), mais cela ne vous aidera probablement pas non plus.À moins que le fournisseur du navigateur n'implémente spécifiquement une manière spécifique au fournisseur de le remplacer, vous ne pouvez rien faire pour les styles qui sont déjà destinés à remplacer la feuille de style du site pour l'utilisateur. Ceux-ci sont généralement appliqués après l'application de vos feuilles de style et ignorent également les
! important
remplacements.la source
Parfois, la saisie semi-automatique sur le navigateur est toujours automatique lorsque vous n'avez que le code dans l'
<form>
élément.J'ai également essayé de le mettre dans l'
<input>
élément et cela fonctionnait mieux.Cependant, la prise en charge de cet attribut cesse, veuillez lire https://bugzilla.mozilla.org/show_bug.cgi?id=956906#c1
https://bugzilla.mozilla.org/show_bug.cgi?id=956906
Une autre solution que j'ai trouvée consiste à supprimer des espaces réservés à l'intérieur des champs de saisie qui suggèrent qu'il s'agit d'un champ d'e-mail, de nom d'utilisateur ou de téléphone (par exemple, "Votre e-mail", "E-mail", etc. ")
Cela empêche les navigateurs de savoir de quel type de champ il s'agit et n'essaye donc pas de le remplir automatiquement.
la source
Si c'est dans le champ de saisie que vous essayez de "décolorer" ...
Donc, cela pourrait ressembler à ceci:
la source
Cela résout le problème sur Safari et Chrome
la source
La capture d'écran à laquelle vous avez lié indique que WebKit utilise le sélecteur
input:-webkit-autofill
pour ces éléments. Avez-vous essayé de mettre cela dans votre CSS?Si cela ne fonctionne pas, alors rien ne fonctionnera probablement. Ces champs sont mis en surbrillance pour alerter l'utilisateur qu'ils ont été remplis automatiquement avec des informations privées (telles que l'adresse personnelle de l'utilisateur) et on pourrait soutenir que permettre à une page de se cacher entraîne un risque de sécurité.
la source
L'
form
élément a unautocomplete
attribut que vous pouvez définiroff
. À partir du CSS, la!important
directive après une propriété l'empêche d'être surchargée:Seul IE6 ne le comprend pas.
Si je vous ai mal compris, il y a aussi la
outline
propriété que vous pourriez trouver utile.la source
!important
directive, auquel cas il prévaut sur tout le reste. Vous devriez consulter la feuille de style de votre agent utilisateur (même si je ne sais pas où la trouver).J'ai vu la fonctionnalité de saisie semi-automatique de la barre d'outils Google désactivée avec javascript. Cela peut fonctionner avec d'autres outils de saisie automatique; Je ne sais pas si cela aidera avec les navigateurs intégrés à la saisie semi-automatique.
la source
Après avoir essayé beaucoup de choses, j'ai trouvé des solutions fonctionnelles qui ont détruit les champs remplis automatiquement et les ont remplacés par des doublons. Pour ne pas perdre les événements attachés, j'ai trouvé une autre solution (un peu longue).
A chaque événement «d'entrée», il attache rapidement des événements de «modification» à toutes les entrées impliquées. Il teste s'ils ont été remplis automatiquement. Si oui, envoyez un nouvel événement de texte qui fera croire au navigateur que la valeur a été modifiée par l'utilisateur, permettant ainsi de supprimer le fond jaune.
la source
Solution javascript simple pour tous les navigateurs:
Cloner l'entrée, réinitialiser l'attribut et masquer l'entrée d'origine. Le délai d'expiration est nécessaire pour l'iPad
la source
Étant donné que le navigateur recherche les champs de type de mot de passe, une autre solution consiste à inclure un champ masqué au début de votre formulaire:
la source
J'ai lu tellement de threads et essayé tellement de morceaux de code. Après avoir rassemblé tout cela, le seul moyen que j'ai trouvé pour vider proprement les champs de connexion et de mot de passe et réinitialiser leur arrière-plan en blanc était le suivant:
N'hésitez pas à commenter, je suis ouvert à toutes les améliorations si vous en trouvez.
la source
La saisie semi-automatique n'est pas prise en charge par les navigateurs modernes. Le moyen le plus simple de résoudre la saisie semi-automatique que j'ai trouvé était une petite piste avec HTML et JS. La première chose à faire est de changer le type d'entrée en HTML de «mot de passe» en «texte».
La saisie semi-automatique démarre après le chargement de la fenêtre. C'est bon. Mais lorsque le type de votre champ n'est pas «mot de passe», le navigateur ne savait pas quels champs il doit remplir. Ainsi, il n'y aura pas de saisie semi-automatique sur les champs de formulaire.
Après cela, liez le focus de l'événement au champ de mot de passe, par exemple. dans Backbone:
Dans
onInputPasswordFocusIn
, changez simplement le type de votre champ en mot de passe, par simple vérification:C'est tout!
UPD: cette chose ne fonctionne pas avec JavaSciprt désactivé
UPD en 2018. J'ai également trouvé une astuce amusante. Définissez l'attribut readonly sur le champ d'entrée et supprimez-le sur l'événement de focus. Empêchez d'abord le navigateur de remplir automatiquement les champs, le second permettra de saisir des données.
la source
autocomplete=off
, car cela fonctionne dans FF, Chrome pendant un certain temps et IE à partir de la version précédente environVeuillez essayer avec autocomplete = "none" dans votre balise d'entrée
Cela fonctionne pour moi
la source
J'ai également dû changer la couleur du texte en quelque chose de plus sombre (voir Couleurs de thème sombres de StackOverflow).
Alors fini avec une solution hybride de @ Tamás Pap, @MCBL et @ don:
la source
Pourquoi ne pas simplement mettre ceci dans votre css:
Cela devrait régler votre problème. Bien que cela soulève un problème d'utilisation, car maintenant l'utilisateur ne peut pas voir que le formulaire a été rempli automatiquement de la manière dont il est habitué.
[modifier] Après avoir posté ceci, j'ai vu qu'une réponse similaire avait déjà été donnée et que vous aviez commenté qu'elle ne fonctionnait pas. Je ne vois pas vraiment pourquoi car cela a fonctionné lorsque je l'ai testé.
la source
input:-webkit-autofill
etinput --webkit-autocomplete
n'existe tout simplement pasLe VRAI problème ici est que Webkit (Safari, Chrome, ...) a un bug. Lorsqu'il y a plus d'un [formulaire] sur la page, chacun avec un [input type = "text" name = "foo" ...] (c'est-à-dire avec la même valeur pour l'attribut 'name'), alors quand l'utilisateur retourne à la page, le remplissage automatique se fera dans le champ de saisie du PREMIER [formulaire] sur la page, et non dans le [formulaire] qui a été envoyé. La deuxième fois, le [formulaire] NEXT sera rempli automatiquement, et ainsi de suite. Seul [formulaire] avec un champ de saisie avec le MÊME nom sera affecté.
Cela doit être signalé aux développeurs Webkit.
Opera remplit automatiquement le bon [formulaire].
Firefox et IE ne se remplissent pas automatiquement.
Alors, je le répète: c'est un bug dans Webkit.
la source