J'ai construit un composant déroulant AngularJS de zone de texte qui fonctionne très bien dans Chrome, Firefox, Safari et Internet Explorer.
Une caractéristique de ce composant est que vous saisissez une chaîne, puis pouvez utiliser les touches fléchées haut/bas pour faire défiler les suggestions.
Dans Microsoft Edge, dès que vous appuyez sur la flèche vers le bas, le texte suivant est ajouté à la zone de saisie:
expliquer brièvement vos changements (orthographe corrigée, grammaire corrigée, mise en forme améliorée)
Puis-je faire quelque chose du côté client pour empêcher que cela se produise?
<form>
<input type="text" />
</form>
Pour illustrer cela, exécutez le sniper ci-dessus, tapez quelque chose dans la zone de texte et appuyez deux fois sur la flèche vers le bas sur Edge. Je veux que cela ne se produise pas, car cela rompt ma saisie semi-automatique!
Merci
Si je comprends bien, vous rencontrez un problème avec la fonctionnalité de saisie semi-automatique. Ajoutez simplement "autocomplete = 'off'" à votre entrée et cela devrait désactiver la fonction.
<input type="text" autocomplete="off"/>
Malheureusement, aucune des suggestions ci-dessus n'a fonctionné pour moi dans le dernier Edge. Cependant, cette solution:
<input type="text" autocomplete="off" list="autocompleteOff"
id="fieldId" name="fieldname" placeholder="Placeholder here" />
Cela force Edge à rechercher une liste de recherche de données appelée autocompleteOff
qui n'existe pas. Fonctionne un régal pour moi.
L'avantage supplémentaire est qu'il s'agit de HTML pur, aucun CSS ou JS requis.
Depuis Mozilla: vous pouvez définir la saisie semi-automatique sur la balise de formulaire réelle <form autocomplete='off' ... >...</form>
Qui fonctionnera pour l'ensemble du formulaire, ou sur des balises <input type='text' />
Individuelles.
D'après mon expérience sur IE 11 et Edge le mettre sur le formulaire fonctionne mais les balises individuelles ne fonctionnent pas. J'ai essayé de tester sur Chrome mais les champs n'étaient pas déjà saisie semi-automatique.
Veuillez lire l'intégralité Article pour des informations plus détaillées.
[~ # ~] note [~ # ~]
La plupart des navigateurs n'en tiennent pas compte pour les champs de connexion.
si vous souhaitez supprimer la saisie semi-automatique à l'entrée dans chrome lorsque vous utilisez autocomplete="off"
vous devez également supprimer id, si vous ne supprimez pas id
sur votre entrée, la saisie semi-automatique ne fonctionnera pas!
exemple simple:
<input type="text" autocomplete="off" list="autocompleteOff"
name="fieldname" placeholder="Placeholder here" />
vous pouvez gérer votre entrée avec un nom;), cela fonctionne très bien pour moi.
si vous en avez besoin sur l'application/à l'échelle du site, vous pouvez utiliser jquery:
$('input').attr('autocomplete','off');
Ou si vous êtes comme moi et que vous utilisez Angular + ui-router vous pouvez essayer ce qui suit:
Dans votre index.html
ajoutez le script suivant:
<script type="text/javascript">
setTimeout(function() {
$('input').attr('autocomplete', 'off');
}, 2000);
</script>
Ensuite, pour couvrir les changements d'état, ajoutez ce qui suit à votre contrôleur racine:
$rootScope.$on('$stateChangeStart', function() {
$timeout(function () {
$('input').attr('autocomplete', 'off');
}, 2000);
});
Les délais d'attente sont pour le html à rendre avant d'appliquer la requête.
Si vous trouvez une meilleure solution, faites-le moi savoir.