web-dev-qa-db-fra.com

Jquery désactiver la saisie semi-automatique en entrée

J'ai ce code:

Le html:

<input id="register_username" type="text">
<input id="register_password" type="text">
<input id="register_repeatpassword" type="text">
<input id="register_email" type="text">

Le Jquery:

$(document).ready(function(){
    $('#register_username').attr('autocomplete','off');
    $('#register_password').attr('autocomplete','off');
    $('#register_repeatpassword').attr('autocomplete','off');
    $('#register_email').attr('autocomplete','off');
    });

Je veux désactiver la fonctionnalité de saisie semi-automatique proposée par certains navigateurs et faire en sorte que l'utilisateur tape tout le champ, mais le code ne fonctionne pas, le menu déroulant apparaît toujours et l'utilisateur peut toujours choisir des choses tapées auparavant. J'ai également essayé d'utiliser autocomplete="off" mais rien ne s'est passé. Qu'est-ce que je fais mal ici?

19
Max Pain

Ajoutez simplement:

autocomplete="off"

comme attributs aux éléments INPUT, f.ex:

<input autocomplete="off" id="register_username" type="text" name="username">
30
David Hellsing

La version jQuery:

$("#register_username").attr("autocomplete", "off");
12
Carl Smith

vérifier cela violon out

 document.getElementById("register_username").autocomplete="off"
6
rajesh kakawat

Bien que je sois d'accord, autocomplete="off" devrait être largement pris en charge et est la solution finale, il ne fonctionne pas peut être le résultat de spécification HTML5 sur l'attribut de saisie semi-automatique :

Le mécanisme d'auto-complétion doit être implémenté par l'agent utilisateur agissant comme si l'utilisateur avait modifié la valeur de l'élément, et doit être effectué à un moment où l'élément est modifiable (par exemple, juste après que l'élément a été inséré dans le document, ou lorsque l'agent utilisateur arrête l'analyse).

Cela, pour moi, implique qu'il devrait être un attribut "original" de l'élément, et ne peut pas être ajouté après le rendu. Et puisque la plupart des navigateurs implémentent la nouvelle spécification1, il y a de fortes chances qu'ils l'aient autorisé avec javascript avant d'avoir probablement corrigé l'implémentation en fonction des spécifications ci-dessus.

Si vous ne l'avez pas déjà fait, essayez d'ajouter l'attribut directement aux contrôles au lieu de vous fier à jQuery pour le faire [vraisemblablement] prêt.

1  J'utilise les spécifications ici car HTML5 n'est pas un standard, mais beaucoup de navigateurs implémentent certaines des fonctionnalités les plus concrètes. Puisque autocomplete existe depuis IE5, c'est probablement une de celles que vous pouvez considérer comme une implémentation sûre.

4
Brad Christie

au cas où quelqu'un viendrait ici chercher comment désactiver la saisie semi-automatique de jquery:

$("#elementId").autocomplete({
  disabled: true
  });
1
Jared
<form id='myForm'>
    <input id="register_username" type="text">
    <input id="register_password" type="text">
    <input id="register_repeatpassword" type="text">
    <input id="register_email" type="text">
</form>
$(document).ready(function(){
    $('#myForm').on( 'focus', ':input', function(){
        $(this).attr( 'autocomplete', 'off' );
    });
});
1
Prakash

Fonctionne au 23 avril 2019.

Si vous souhaitez désactiver le remplissage automatique de Chrome sur tout ce qui se trouve sur votre page, surtout si vous n'utilisez pas de formulaires, mais plutôt des sélecteurs jquery sérialisés pour soumettre vos données.

Le faire lors de l'exécution a eu les meilleurs résultats pour moi, et Chrome remplira automatiquement le runtime de toute façon, c'est donc une solution justifiable pour contrer le comportement de Chrome.

Ajoutez simplement ceci au bas de votre code et Chrome n'essaiera pas de forcer les choses à remplissage automatique:

<script>
    $(document).ready(function () {
        $("input").attr("autocomplete", "new-password");
    });
</script>
1
Wadih M.

Maintenant, un jour, vous devez remplacer "off" par une autre chaîne aléatoire comme "nope":

Jquery:

$("#register_username").attr("autocomplete", "nope");

HTML:

<input id="register_username" type="text" autocomplete="nope">
1
Cava