2017-09-06 7 views
1

J'essaie d'afficher un mot de passe dans un champ de saisie lorsque je passe la souris dessus et après 1 seconde, je le change en mot de passe.jQuery Modifier l'entrée du texte, retour au mot de passe

C'est ce que j'ai:

if (this.type === 'password') { 
    this.type = "text"; 
    setTimeout(function() { 
    this.type = "password"; 
    }, 100) 
} 

Il change le mot de passe en texte, mais ne change pas en arrière. J'essaye de faire de cette façon pour arrêter le code en changeant tous les champs de texte aux mots de passe.

Une idée de comment je peux faire cela?

Merci

+4

'this' dans votre délai d'expiration n'est pas ce que vous pensez qu'il est. –

+0

Merci - Je ne suis pas réalisé que – Tom

Répondre

1

Modifier votre code à

if (this.type === 'password') { 
    this.type = "text"; 
    var that = this; 
    setTimeout(function() { 
    that.type = "password"; 
    }, 1000) 
} 

Tenir la référence this en & variables à l'intérieur de l'utiliser setTimeout.

J'espère que cela vous aidera.

+0

Merci qui explique ce qui me manquait et cela fonctionne. – Tom