Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Adicionando um botão para mostrar a senha

Tentei adicionar um botão para mostrar a senha, porém quando pressiono ele, todo o form é enviado. Do jeito q consegui parar esse comportamento (onsubmit="return false"), o botão final também está sendo desabilitado, o q eu não queria que acontecesse.

Alguma sugestão de como resolver isso? Obrigado.

<form onsubmit="return false">

        <fieldset>
            <label for="senha">Senha:</label>
            <input type="password" id="senha" name="senha" minlength="6" required>
            <button onclick="funçãoToggle()">mostrar senha</button>
        </fieldset>
        
        <fieldset>
            <input type="submit" id="submit" name="submit">
        </fieldset>
2 respostas
solução!

Oi, Daniel, tudo bem?

A questão aqui parece ser que o botão para mostrar a senha está sendo interpretado como um botão de submit, que é o comportamento padrão para botões em um formulário se não especificado de outra forma. Para corrigir isso, você pode especificar o tipo do botão como "button". Isso impedirá que ele envie o formulário quando clicado. Aqui está como você pode ajustar seu código:

<form>
    <fieldset>
        <label for="senha">Senha:</label>
        <input type="password" id="senha" name="senha" minlength="6" required>
        <!-- Especifique o tipo do botão como 'button' para evitar que ele submeta o formulário -->
        <button type="button" onclick="funcaoToggle()">Mostrar senha</button>
    </fieldset>
    
    <fieldset>
        <input type="submit" id="submit" name="submit">
    </fieldset>
</form>

E sobre a função funcaoToggle(), você precisará definir essa função em seu JavaScript para que ela alterne o atributo type do input de senha entre password e text. Aqui está um exemplo simples de como essa função pode ser escrita:

function funcaoToggle() {
    var senha = document.getElementById('senha');
    if (senha.type === 'password') {
        senha.type = 'text';
    } else {
        senha.type = 'password';
    }
}

Com essa abordagem, o botão para mostrar a senha não afetará o envio do formulário, e o botão de envio continuará funcionando normalmente.

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado! Tudo funcionando agora!