web-dev-qa-db-fra.com

Désactiver les suggestions de texte d'entrée dans Edge?

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

15
JMK

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"/>
27
rockmandew

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.

11
SimonGoldstone

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.

6
Charles Driver Jr.

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.

3
Aras

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.

1
TrampGuy