Jump to content
Flaviaac

Como adicionar um evento específico nos campos de um formulário HTML.

Recommended Posts

Boa tarde pessoal,

gostaria de pedir uma ajuda para criar um evento em um formulário HTML.

 


Eu tenho um formulário em HTML e PHP,  e nele tem um campo do tipo select e um campo do tipo text(desabilitado).
Gostaria que ao clicar no campo select e escolher qualquer opção da lista, automaticamente em seguida aparecesse dentro do campo text um valor respectivo a opção escolhida anteriormente.

 

Exemplo:

Tenho um campo select com tipos diferentes de materiais (vidro, papel, alumínio, etc.) e no campo text(desabilitado) terei a quantidade de anos que cada material demora a se decompor na natureza. O campo text inicialmente estará vazio, mas quando selecionar o material, aparecerá dentro deste text a quantidade de anos.

 

obs.: Os valores do campo select e do campo text estão ambos na mesma tabela do banco de dados(MySQL), o campo select com valores string e o campo text com valores inteiros.

 

Não sei se consegui explicar direito, mas acredito que terei que utilizar javascript para este evento, mas ainda não sei como.

Alguém tem ideia de como eu poderia fazer isso ou alguma dica?

 

 

Muito obrigada!!

:smile:

 

Share this post


Link to post
Share on other sites

Algo simples, um ouvinte de eventos no seletor e pronto.

Mas devo ressaltar que ao inserir o valor em um input text não é o ideal, pois o usuário "seleciona laranja depois vai ao input e escreve limão" removendo a lógica da questão.

 

Nesse contexto o input pode ser oculto e ao invés de só inserir o valor no input manipulamos outro elemento "não editável" para informar o valor selecionado.

<select name="qualquer_coisa" id="seletor">
    <option value="">Selecione uma opção</option>
    <option value="1">Opção A</option>
    <option value="2">Opção B</option>
    <option value="3">Opção C</option>
</select>

<input type="hidden" name="outra_coisa" id="caixa_de_texto" />
<div></div> <!-- Use o CSS para personalizar esse divisor para que ele se pareça com um input-type-text -->

<script>
    var seletor = document.getElementById('seletor');
    var texto = document.getElementById('caixa_de_texto');

    function alterarInput(evento) {
        var alvo = evento.target;
        var divTexto = texto.nextElementSibling; // O próximo elemento HTML depois do input
        
        texto.value = alvo.value; // Alterando o valor do input para o valor selecionado
        divTexto.innerText = (alvo.value.length ? alvo.value : ''); // Colocando o valor na div
    }

    seletor.selectedIndex = 0; // Sempre quando carregar a página o seletor muda para primeira opção
    seletor.addEventListener('change', alterarInput, false);
</script>

 

Questão de string e inteiros.

Uma vez como valores de elementos mesmo sendo números na verdade são strings então.

Para converter um número em INT com javascript você usa a função parseInt

console.log( parseInt('123') );

Para converter um número em INT com o php você usa a nomenclatura (int)

<?php
$inteiro = (int) '123';

 

Share this post


Link to post
Share on other sites

Obrigada @Omar~ pelo esclarecimento.

Coloquei o campo text desabilitado justamente para o usuário não conseguir preenchê-lo, mas vou adicionar a opção de ocultar também.

:thumbsup:

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By viniciusfroner
      Boa noite, gostaria de saber se alguém conhece algum plug-in que gere esse tipo de mapa, no caso a antiga API do google que fazia isso está off..
       
       
      <div> <iframe style="border:0; width: 100%; height: 350px;" src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d12097.433213460943!2d-74.0062269!3d40.7101282!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0xb89d1fe6bc499443!2sNome+SegundoNome!5e0!3m2!1smk!2sbg!4v1539943755621" frameborder="0" allowfullscreen></iframe> </div>  
    • By klasss
      Olá a todos, 

      Tenho aqui um erro parvo não estou a ver como resolver . 

      Na minha View tenho um botão que será para fazer a aprovação de documentos , que abre uma modal para fazer a confirmação : 
      O problema é que quis fazer a mesma coisa para rejeitar. 
       
      <a href="{{route('despesas.modal', $item)}}" ><i class="fas fa-check text-info mr-1"></i></a> <a href="{{route('despesas.modal2', $item)}}" ><i class="fas fa-ban text-danger mr-1"></i></a> <?php if(@$id != ""){ echo "<script>$('#modalaceitar').modal('show');</script>"; } ?> <?php if(@$id != ""){ echo "<script>$('#modalrejeitar').modal('show');</script>"; } ?> Será que consigo validar por exemplo criando um ID nos dois botões?  
       
      Obrigado!
    • By b2black
      Então, estou tentando criar um submenu com opções quando o usuário passa o link em cima da imagem, porém não estou conseguindo, qual é o jeito certo de fazer?
       
      Ao clicar no link (link-login) que é uma imagem colocada com css, abre um menu abaixo da imagem com 5 opções de link
       
      <div class="nav-container"> <nav> <ul class="desktop-nav"> <li> <a href="" class="link-logo"></a> </li> <li> <a href="">Charm Points</a> </li> <li> <a href="">Ranking</a> </li> <li> <a href="">Colaboradores</a> </li> <li> <a href="">Blog</a> </li> <li> <a href="">Eventos</a> </li> <li> <a href="">Suporte</a> </li> <li> <!--<a href="" class="link-search"></a>--> <form method="get" action="" class="search"> <input name="boxsearch" type="search-text" placeholder="" /> </form> </li> <li> <a href="" class="link-bag"></a> </li> <li> <a href="" class="link-login"></a> </li> </ul> </nav> </div>  
      .link-login { background: url('avatar.png'); background-repeat: no-repeat; display: block; background-position: center; background-size: 20px; height: 44px; width: 20px; } .link-login:hover { position: relative; display: inline-block; margin-top: 50px; min-width: 160px; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); padding: 12px 16px; z-index: 1; }  
    • By b2black
      Estava vendo para atualizar o Windows pro 11, e notei isso no site da Microsoft, alguém sabe qual repositorio, ou como pesquisar para desenvolver algo similar?
      Quando você rola a página, o menu fica transparente.
       
      Explore Windows 11 OS, Computers, Apps, & More | Microsoft
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.