Ir para conteúdo
fideles

Preencher input text com base em select

Recommended Posts

Senhores, venho mais uma vez pedir ajuda a vocês e parabenizar todos que ajuda uns aos outros.

 

Tenho um formulario, e que o codigo funciona até certa parte, vamos lá.

 

Tenho uma tabela com alguns input e um Javascript com um botão de mais para adicionar ou remove linhas.

 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
  function removeCampo() {
	$(".removerCampo").unbind("click");
	$(".removerCampo").bind("click", function () {
	   if($("tr.linhas").length > 1){
		$(this).parent().parent().remove();
	   }
	});
  }
 
  $(".adicionarCampo").click(function () {
	novoCampo = $("tr.linhas:first").clone();
	novoCampo.find("input").val("");
	novoCampo.insertAfter("tr.linhas:last");
	removeCampo();
  });
});
</script>

E tenho um código javascript também que pega a informação de um submit e preenche outros campos,

 

<script type="text/javascript">
			function update() {
				var select = document.getElementById('atividade[]');
				var option = select.options[select.selectedIndex];

				document.getElementById('descricao[]').value = option.text;
								
			}

			update();
</script>

O maior problema é que esse codigo só funciona na primeira linha e nas demais, quando utilizo o botão para adicionar mais linhas, ele não funciona. 

Todos meus input no campo "name" no fim tem os colchete "[ ]" para criar os arrays e gravar mais de uma linha no banco.

 

Sugere algo para que o JS (o segundo) funcione em todas as linhas ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!
Ser a ver o relativo trecho html, fica difícil.
mas o que percebi:
 

16 horas atrás, fideles disse:

document.getElementById('descricao[]').value = option.text;

quantas ids iguais a essa existem no seu script?
id = identidade

identidade deve ser única.

Ninguém pode ter a identidade igual a de outra pessoa.


Se dois ou mais elementos html tiverem a mesma identidade, vai haver um problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente sem o HTML fica ruim, de qualquer forma postei aqui para que você consiga ver, porque realmente não consegui identificar.

 

Quanto ao ID, ele funciona, aconte que ao clicar para adicionar mais linhas ele não funciona, funciona somente para a primeira linha.

 

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sem título</title>
	
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
  function removeCampo() {
	$(".removerCampo").unbind("click");
	$(".removerCampo").bind("click", function () {
	   if($("tr.linhas").length > 1){
		$(this).parent().parent().remove();
	   }
	});
  }
 
  $(".adicionarCampo").click(function () {
	novoCampo = $("tr.linhas:first").clone();
	novoCampo.find("input").val("");
	novoCampo.insertAfter("tr.linhas:last");
	removeCampo();
  });
});
</script>
		
<script type="text/javascript">
			function update() {
				var select = document.getElementById('atividade[]');
				var option = select.options[select.selectedIndex];

				document.getElementById('descricao[]').value = option.text;
								
			}

			update();
</script>

	
</head>

<body>
	
	<table width="100%" border="1" align="center" cellpadding="1" cellspacing="1">
            <tbody>
              <tr>
                <td width="9%" align="center"><strong>Atividade</strong></td>
                <td width="7%" align="center"><strong>EAP</strong></td>
                <td width="7%" align="center"><strong>Ativo</strong></td>
                <td width="4%" align="center"><strong>Seq.</strong></td>
                <td width="20%" align="center"><strong>Descrição</strong></td>
                <td width="12%" align="center"><strong>Descrição complementar</strong></td>
                <td width="11%" align="center"><strong>Comentário</strong></td>
                <td width="6%" align="center"><strong>CWP</strong></td>
                <td width="5%" align="center"><strong>Quant. F.</strong></td>
                <td width="4%" align="center"><strong>Unid.</strong></td>
                <td width="6%" align="center"><strong>PK. F</strong></td>
                <td width="9%" align="center"><strong>Atv.+Seq.</strong></td>
              </tr>
              <tr class="linhas">
                <td height="25" align="center"><select name="atividade[]" id="atividade[]" required="required" style="width:130px;" onChange="update()" >
                  <option value="">Selecione</option>
                  <?php
								$sql = mysql_query("SELECT * FROM SGPQ_atv ORDER BY cod_atividade ASC ");
								while($linha =@mysql_fetch_array($sql)){ ?>
                  <option value="<?php echo $linha['cod_atividade']; ?>" id="<?php echo $linha['cms']; ?>" title="<?php echo $linha['unidade']; ?>"><?php echo $linha['cod_atividade']; ?> - <?php echo $linha['descricao_atv']; ?></option>
                  <?php
								}
								?>
                </select></td>
                <td align="center"><select name="eap[]" id="eap[]" required="required" style="width:110px;" >
                  <option value="">Selecione</option>
                  <?php
										$sql = mysql_query("SELECT * FROM SGPQ_eap ORDER BY eap_cliente ASC ");
										while($linha =@mysql_fetch_array($sql)){ ?>
                  <option value="<?php echo $linha['eap_cliente']; ?>"><?php echo $linha['eap_cliente']; ?></option>
                  <?php
										}
									?>
                </select></td>
                <td align="center"><select name="ativo[]" id="ativo[]" required="required" style="width:90px;">
                  <option value="">Selecione</option>
                  <?php
										$sql = mysql_query("SELECT * FROM SGPQ_ativos ORDER BY ativo ASC ");
										while($linha =@mysql_fetch_array($sql)){ ?>
                  <option value="<?php echo $linha['ativo']; ?>"><?php echo $linha['ativo']; ?></option>
                  <?php
										}
									?>
                </select></td>
                <td align="center"><input type="text" name="sequencial[]" id="sequencial" size="5" autocomplete="off" required="required" ></td>
                <td align="center"><input name="descricao[]" type="text" required="required" id="descricao[]" size="50" readonly="readonly" /></td>
                <td align="center"><input name="desc_complementar" type="text" id="desc_complementar" size="27"></td>
                <td align="center"><input name="comentario" type="text" id="comentario" size="27"></td>
                <td align="center"><input type="text" name="cwp[]" id="cwp[]" size="10" autocomplete="off" readonly="readonly" ></td>
                <td align="center"><input type="text" name="quantidade_f[]" id="quantidade_f" size="5" autocomplete="off" required="required" ></td>
                <td align="center"><input type="text" name="unidade[]" id="unidade[]" size="5" autocomplete="off" required="required" readonly="readonly" ></td>
                <td align="center"><select name="pacote[]" id="pacote" required="required" style="width:90px;">
                  <option value="">Selecione</option>
                  <?php
										$sql = mysql_query("SELECT * FROM SGPQ_pacote ORDER BY pacote ASC ");
										while($linha =@mysql_fetch_array($sql)){ ?>
                  <option value="<?php echo $linha['pacote']; ?>"><?php echo $linha['pacote']; ?></option>
                  <?php
										}
									?>
                </select></td>
                <td align="center"><select name="ativo_sequencial[]" id="ativo_sequencial" required="required" style="width:130px;">
                  <option value="">Selecione</option>
                  <?php
										$sql = mysql_query("SELECT * FROM SGPQ_ativo_sequencial ORDER BY ativo_seq ASC ");
										while($linha =@mysql_fetch_array($sql)){ ?>
                  <option value="<?php echo $linha['ativo_seq']; ?>"><?php echo $linha['ativo_seq']; ?></option>
                  <?php
										}
									?>
                </select></td>
              </tr>
            </tbody>
          </table>
	<input type="button" name="Adicionar" id="Adicionar" class="adicionarCampo" value="+">
	
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 hours ago, fideles said:

Quanto ao ID, ele funciona, aconte que ao clicar para adicionar mais linhas ele não funciona, funciona somente para a primeira linha.

 

Exatamente por causa dos ids repetidos

 

Leia: https://css-tricks.com/the-difference-between-id-and-class/

Sugestão gambiarrada:

Passa o elemento como parâmetro da função update

<select name="atividade[]" id="atividade[]" required="required" style="width:130px;" onChange="update(this)">
/**
 * UPDATE
 * @param element
 */
function update(element) {
  // o select que sofreu o evento change
  var esteSelect = $(element);
  
  // definir em qual linha está este select
  var tr = esteSelect.closest('tr');

  // buscar o input desta linha
  var input = tr.find('input[id="descricao[]"]')

  // atribuir o valor
  input.val(esteSelect.find('option:selected').text());
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Senhores, agradeço viu.

 

Conseguiram tirar um peso que estava enfrentando por um vacilo meu.

 

Se nesse codigo eu precisasse do value ao inves do text? Bastaria somente trocar text por value ?

 

  // atribuir o valor
  input.val(esteSelect.find('option:selected').text());
}

 

Ficarei atento da proxima.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 05/11/2020 at 17:17, washalbano disse:

Não!
basta usar apenas: this.value

 

Meu JS está de ruim a pior, acabei de crer ou posso larga essa vida e procurar outra.

 

Por favor, veja, não funciona.

 

  // atribuir o valor
  input.val(esteSelect.find('option:selected').this.value);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.