Botão Mostrar ou ocultar senha

Quando criamos um formulário de cadastro temos a tendência de exibir um campo “Senha” e outro de “Confirmar senha”. isso é para aumentar a chance do usuário digitar a senha desejada de forma correta.

Outra tendência cada vez mais comum é ter um botão de mostrar/ocultar senha. O botão quando clicado irá mostrar ao usuário o que ele digitou no campo senha. Caso seja necessário alterar a senha digitada, o usuário poderá fazer diretamente no campo da senha.

Usando essa mesma ideia, podemos adicionar este botão em telas de login. Um bom exemplo do botão exibir senha encontramos no site mobile do Facebook:

Exemplo exibir senha
Opção exibir senha, site mobile do Facebook

Essa funcionalidade pode incrementar e aumentar a usabilidade do formulário, principalmente para usuários móbile onde sabemos que a entrada de dados não é uma tarefa muito fácil.

Criando o botão mostrar/ocultar senha

Primeiro precisamos criar o formulário. Criaremos uma tela de login para o exemplo.

<div class="container">
  <form action="" id="loginForm">
    <h2>Login</h2>
    <p><label for="username">Username</label><input type="text" name="username" id="username" placeholder="username" /></p>
    <p><label for="password">Password</label><input type="password" name="password" id="password" placeholder="password" /> <input type="button" id="showPassword" value="show" class="button" /></p>
    <p><input type="submit" value="Login" class="button" /></p>
  </form>
</div>

jQuery para mostrar ou ocultar a senha

Com o formulário criado podemos criar o script em jQuery necessário para mudar o campo de senha para uma caixa de texto.

Vamos adicionar um evento de clique no botão mostrar/ocultar senha. Dentro desse evento armazenamos em uma variável o tipo atual do campo, se é de senha ou texto.
Se for um campo de senha, precisamos mudar o type do formulário para texto, assim:

passwordField.attr('type', 'text');

Isso irá mostrar a senha do usuário.

Precisamos também mudar o texto de “Mostrar senha” para “Ocultar senha”. Podemos fazer assim:

$(this).val('Hide');

Em seguida adicionamos o código para manipular o evento de esconder a senha e mudar o campo de texto para um campo de senha.

Fizemos isso usando o método attr () novamente.

passwordField.attr('type', 'password');

Precisamos novamente mudar o texto do botão para “Mostrar senha”:

$(this).val('Show');

Abaixo o código jQuery completo:

// Check javascript has loaded
$(document).ready(function(){

  // Click event of the showPassword button
  $('#showPassword').on('click', function(){
    
    // Get the password field
    var passwordField = $('#password');

    // Get the current type of the password field will be password or text
    var passwordFieldType = passwordField.attr('type');

    // Check to see if the type is a password field
    if(passwordFieldType == 'password')
    {
        // Change the password field to text
        passwordField.attr('type', 'text');

        // Change the Text on the show password button to Hide
        $(this).val('Hide');
    } else {
        // If the password field type is not a password field then set it to password
        passwordField.attr('type', 'password');

        // Change the value of the show password button to Show
        $(this).val('Show');
    }
  });
});

Essa funcionalidade já ajuda muito usuários desktops, imagina usuários de dispositivos mobile, pois a chance de digitarmos algo errado em telas pequenas é alta; E, por conta disso, é comum o dispositivo exibir o último caractere da senha por alguns segundos. Isso já facilita bastante.

Aqui você pode conferir um exemplo do tutorial:

See the Pen Myprbq by Paul (@paulund) on CodePen.

Fonte: http://www.paulund.co.uk/create-show-password-button

Curta a página do blog kadunew no Facebook. Siga-me no Twitter: @kadunew.