Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho uma tela para conferencia de separação de pedidos e coloque uma validação dos campos de quantidade e ean onde se o informado for diferente do que consta no pedido ele não deixa prosseguir.
como o pedido ele pode possuir varias linhas eu utilizo foreach e javascript para montar na tela.
o meu problema é que a validação dos campos só considera o valor da 1º linha a partir da segunda linha ele da que os dados não confere e se eu colocar os dados da 1º linha mesmo sendo diferente dos dados do pedido ele deixa passar.
o meu javascript está assim:
<script>
function validaEAN (input){
if (input.value != document.getElementById('ean2').value) {
input.setCustomValidity('EAN Não Confere');
} else {
input.setCustomValidity('');
}
}
function validaqtd (input){
if (input.value != document.getElementById('qtd').value) {
input.setCustomValidity('QUANTIDADE Não Confere');
} else {
input.setCustomValidity('');
}
}
</script>
e o minha tela é montada assim:
<form form id="cad" name="cad" method="post" $id = $_GET['id'];>
<input type="hidden" name="acao" value="1" />
<strong><b><font size="3"> <font color="#000000">Data :</font></strong>
<input type="text" name="data" name="dtConcat2" size="11" maxlength="10" value="<?php echo $detalhe['dtConcat2']?>" readonly /> <br><br>
<strong><b><font size="3" > <font color="#000000">Cliente :</strong>
<input type="text" size="80" name="clienteAt" size="11" maxlength="10" value="<?php echo $detalhe['nome']?>" readonly />
<br><br>
<strong><b><font size="3"> <font color="#000000">Observação : <br>
<input type="text" name="descricao" size="90" maxlength="90" value="<?php echo $detalhe['descricao']?>" />
<br><br>
<table border="0" cellpadding="2" cellspacing="4" class="tblDet">
<tr>
<td class="bd_titulo">Produto</td>
<td class="bd_titulo">Quantidade</td>
<td class="bd_titulo">Quantidade Conferida</td>
<td class="bd_titulo">EAN</td>
<td class="bd_titulo">EAN Conferido</td>
</tr>
<tr class="linhas">
<td><select name="cat_id[]" onchange="setProdLinha(this)" class="cat_id" disabled="disabled">
<option value="">Selecione</option>
<td>
<input id="qtd" type="text" name="qtd[]" class="qtd"
required name="qtd" size="11" disabled="disabled"
style="text-align:center" />
</td>
<td>
<input type="text" name="qtd_conf[]" class="qtd_conf"
oninput="validaqtd(this)"required name="qtd_conf" size="11"
style="text-align:center" />
</td>
<td>
<input id="ean2" name="ean2[]" type="text" required name="ean2"
maxlength="30" size="21"
style="text-align:center"
class="ean2" />
</td>
<td>
<input type="text" name="ean[]" class="ean"
oninput="validaEAN(this)"required name="ean" size="21"
style="text-align:center" />
</td>
</tr>
<tr>
<td colspan="4">
<p><input type="submit" value="Alterar" /></p>
<p><a href="consulta_conferencia.php">Cancelar/Voltar</a></p>
Onde estou errando?Olá rcamu, tudo bem? Espero que sim!
Desde já, deixo informado que o tópico está no local incorreto, esta área é destinada a PHP, não JavaScript.
Vamos ao assunto principal:
Se os dados vem em um array, ou seja, existe mais de um input com um determinado nome (name="qdt[]"), você deve chamar todos, a sua função está chamando apenas o primeiro valor mesmo.
Para que a sua função puxe todos os valores utilize a função .each() do jQuery.
Documentação do .each(): https://api.jquery.com/each/ e http://api.jquery.com/jquery.each/
Caso queira utilizar javascript puro, será necessário colocar um for dentro da sua função contando o número de linhas que existe.
Abraços, Wictor Pamplona.
WictorP, blz e você? obrigado por perguntar.
Passei o fds lendo sobre a função .each() e não consegui colocar no meu cód. (sou bem iniciante)
Você teria algum exemplo que eu poderia utilizar?
Estou bem rcamu. Obrigado!
// Criar o array
var qtd = new Array();
$("input[name='qtd']").each(function() {
var valor = $(this).val();
qtd.push(valor);
});
// Desfazer array
$.each(qtd, function(key, value) {
alert(key);
//alert(value)
}
Também pode usar **for** para desfazer o array.
Eu usei jQuery porque tenho mais afinidade, mas o código funciona com javascript puro também, basta adaptar.
**Abraços, Wictor Pamplona.**
Pessoal nenhuma ajuda...to quebrando a cabeça e ainda não consegui