Entre autres textes et aides visuelles sur la soumission d'un formulaire, la post-validation, je colore mes boîtes de saisie en rouge pour indiquer la zone interactive nécessitant une attention.
Sur Chrome (et pour les utilisateurs de la barre d'outils Google), la fonction de remplissage automatique re-colore mes formulaires de saisie en jaune. Voici le problème complexe: je veux que la saisie semi-automatique soit autorisée sur mes formulaires, car elle accélère la connexion des utilisateurs. Je vais vérifier la possibilité de désactiver l'attribut de saisie semi-automatique si / quand une erreur est déclenchée, mais c'est un problème complexe peu de codage pour désactiver par programme l'auto-complétion pour la seule entrée affectée d'une page. Cela, pour le dire simplement, serait un casse-tête majeur.
Donc, pour essayer d'éviter ce problème, existe-t-il une méthode plus simple pour empêcher Chrome de recolorer les zones de saisie?
[modifier] J'ai essayé la suggestion! importante ci-dessous et cela n'a eu aucun effet. Je n'ai pas encore vérifié la barre d'outils Google pour voir si l'attribut! Important fonctionnerait pour cela.
Pour autant que je sache, il n'y a pas d'autre moyen que d'utiliser l'attribut autocomplete (qui semble fonctionner).
la source
Réponses:
Je sais que dans Firefox, vous pouvez utiliser l'attribut autocomplete = "off" pour désactiver la fonctionnalité de saisie semi-automatique. Si cela fonctionne dans Chrome (non testé), vous pouvez définir cet attribut lorsqu'une erreur est rencontrée.
Cela peut être utilisé pour un seul élément
... ainsi que pour un formulaire entier
la source
<%= simple_form_for @user, html: { autocomplete: 'off' } do |f| %>
Définissez la propriété de contour CSS sur aucun.
Dans les cas où le navigateur peut également ajouter une couleur d'arrière-plan, cela peut être corrigé par quelque chose comme
la source
:focus { background-color: #fff; }
input[type=text], input[type=password], input[type=email], textarea, select { outline: none; }
c'est exactement ce que vous recherchez!
la source
input:-webkit-autofill, input:focus:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px #FFF inset; }
En utilisant un peu de jQuery, vous pouvez supprimer le style de Chrome tout en conservant la fonctionnalité de saisie semi-automatique intacte. J'ai écrit un court article à ce sujet ici: http://www.benjaminmiles.com/2010/11/22/fixing-google-chromes-yellow-autocomplete-styles-with-jquery/
la source
Pour supprimer la bordure de tous les champs, vous pouvez utiliser les éléments suivants:
*:focus { outline:none; }
Pour supprimer la bordure des champs sélectionnés, appliquez simplement cette classe aux champs de saisie souhaités:
.nohighlight:focus { outline:none; }
Vous pouvez bien sûr également modifier la bordure à votre guise:
.changeborder:focus { outline:Blue Solid 4px; }
(De Bill Beckelman: Remplacer la bordure automatique de Chrome autour des champs actifs à l'aide de CSS )
la source
Oui, ce serait un mal de tête majeur, qui à mon avis ne vaut pas le retour. Vous pourriez peut-être modifier un peu votre stratégie d'interface utilisateur et au lieu de colorer la boîte en rouge, vous pouvez colorer les bordures en rouge ou mettre un petit ruban rouge à côté (comme le ruban gmails "Chargement") qui disparaît lorsque la boîte est dans concentrer.
la source
C'est un jeu d'enfant avec jQuery:
Ou si vous voulez être un peu plus sélectif, ajoutez un nom de classe pour un sélecteur.
la source
Le moyen le plus simple à mon avis est:
Utilisez ce code:
la source
Après avoir appliqué sa solution @Benjamin, j'ai découvert que le fait d'appuyer sur le bouton de retour me donnerait toujours la surbrillance jaune.
Ma solution en quelque sorte pour éviter ce point fort jaune de revenir est en appliquant le javascript jQuery suivant:
J'espère que cela aide n'importe qui !!
la source
Cela marche. Mieux encore, vous pouvez utiliser des valeurs rgba (le hack encadré box-shadow ne fonctionne pas avec rgba). Ceci est une légère modification de la réponse de @ Benjamin. J'utilise $ (document) .ready () au lieu de $ (window) .load (). Cela semble mieux fonctionner pour moi - maintenant, il y a beaucoup moins de FOUC. Je ne crois pas qu'il y ait et d'inconvénients à utiliser $ (document) .ready ().
la source
pour les versions d'aujourd'hui, cela fonctionne aussi s'il est placé dans l'une des deux entrées de connexion. Corrigez également le problème de la version 40+ et de la fin de Firefox.
la source
Cela a très bien fonctionné pour moi, mais plus que susceptible de garder les choses uniformes sur votre site, vous voudrez également l'inclure dans votre CSS pour les zones de texte:
Cela peut également sembler évident pour la plupart, mais pour les débutants, vous pouvez également le définir sur une couleur en tant que telle:
la source
Si je me souviens bien, une règle! Importante dans la feuille de style pour la couleur d'arrière-plan des entrées remplacera la saisie semi-automatique de la barre d'outils Google - probablement la même chose pour Chrome.
la source