Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 ?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>>
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());
}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.>
7 hours ago, fideles said:
Bastaria somente trocar text por value ?
Não!
basta usar apenas: this.value
>
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);
}>
On 11/5/2020 at 5:17 PM, washalbano said:
basta usar apenas: this.value
Apenas e somente:
input.val(this.value);
Bom dia!
Ser a ver o relativo trecho html, fica difícil.
mas o que percebi:
>
16 horas atrás, fideles disse: