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

Personalização de formulários

Olá! Estou com uma dúvida e gostaria que alguém pudesse me ajudar. Acredito que seja algo bem simples.

Eu tenho um formulário com algums textboxes... Eu apenas gostaria que o texto de dentro dos textboxes, assim que clicados, subissem para ficar em cima do textbox comportando-se como um label.

Por exemplo, no campo NOME, vai estar escrito "NOME" na textbox. Quando eu clico na textbox pra digitar meu nome, o "NOME" desaparece e vai pra cima da textbox como se fosse uma label comum!

Espero que tenha dado para entender haha.

Desde já agradeço a atenção da comunidade!

2 respostas
solução!

Fala aí Renan!!

Não sei se fiz 100% o que você queria, mas gerei uma estrutura simples que mostra e desaparece o título do formulário ao clicar no seu input.

<!DOCTYPE html>
<html>
<body>

<form>
  <label for="input"></label> <br>
  <input id="input" type="text" name="fname" placeholder="Primeiro Nome"><br>
  <br>
</form>
    <script>
    let input = document.querySelector("#input");
    input.addEventListener('focusin', function(){
        let label = document.querySelector('label[for="input"]');
        label.textContent = input.placeholder;
        input.placeholder = '';
    });
    input.addEventListener('focusout', function(){
        let label = document.querySelector('label[for="input"]');
        input.placeholder = label.textContent;
        label.textContent = '';
    });
    </script>
</body>
</html>

O truque é observar os eventListeners utilizados ao clicarmos no input: focusin é o evento utilizado para ações onde um elemento possui o atributo de foco (ex: ao clicarmos numa caixa de texto para digitarmos o texto na mesma), enquanto focusout representa a perda do mesmo ao interagir com outros objetos na tela ( ex: Clicar fora da caixa de texto selecionada).

Outra dica legal é colocar o atributo placeholder no seu input: quando o mesmo está setado com algum texto, o mesmo aparecerá "transparente" no input, e irá sumir quando algum texto estiver escrito dentro do input.

Desta forma, conseguimos alterar o texto e a visibilidade dos elementos de acordo com o foco nos mesmos selecionados na tela!

Espero ter conseguido ajudar, e se tiver alguma dúvida quanto ao código, só perguntar!!

Amigo, era exatamente isso que eu queria! Muito obrigado! Estudarei muito seu código!

Agora e se eu tenho um formulário com 4 labels e cada uma tem um ID diferente?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software