Tenho um javascript que cria linhas com campos de text de um form atraves de um bt. Em cada linha existem 4 campos (codProduto, QtdItem, valorUnitario, valorTotalItem), neste JS tb multiplico os campos QtdItem e ValorUnitario e mostro o resultado no campo valorTotalItem. Até ai tudo funciona certinho, mas agora estou querendo somar todos os valores do campo valorTotalItem de cada linha e mostrar em outro campo fixo no form, que é o valorTotalNF.
Como poderia armazenar estes valores e depois mostrar neste campo??
Tentei fazer, mas não consegui...
Abaixo segue o código:
<html>
<head>
<title></title>
<script type="text/javascript">
//Não altere esses valores!
//Baseado no código postado em: http://forum.imasters.uol.com.br/index.php?showtopic=325267
var iCount = 0;
var iCampos = 1;
//Definindo quantos campos poderão ser criados (máximo);
var iCamposTotal = 20;
//Função que adiciona os campos;
function addInput() {
if (iCampos <= iCamposTotal) {
var texto = "<div id='linha"+iCount+"'><input type='hidden' name='valorTotalNFHidden' id='texto"+iCount+"' value=''><input type='hidden' name='valorTotalItemHidden' id='texto"+iCount+"' value=''><input type='text' name='numItem' id='texto"+iCount+"' size='3' value=''class='text'> <input type='text' name='codProduto' id='texto"+iCount+"' size='8' value=''class='text'> <input type='text' name='nomeProduto' id='texto"+iCount+"' size='22' value=''class='text'> <input type='text' name='unid' id='texto"+iCount+"' size='3' value=''class='text'> <input type='text' name='qtdItem' id='texto"+iCount+"' size='5' value='' class='text'> <input type='text' name='valorUnitario' id='texto"+iCount+"' size='8' value='' onblur='multiplica();' class='text'> <input type='text' name='valorTotalItem' id='texto"+iCount+"' size='11' value='' readonly='true' class='text'> <input type='button' value=' - ' onClick='removeInput("+iCount+")' class='botao'></div>";
//Capturando a div principal, na qual os novos divs serão inseridos:
var camposTexto = document.getElementById('camposTexto');
camposTexto.innerHTML = camposTexto.innerHTML+texto;
iCount++;
iCampos++;
}
}
//Função que remove os campos;
function removeInput(e) {
var pai = document.getElementById('camposTexto');
var filho = document.getElementById("linha"+e);
document.getElementById("texto"+e).select();
if(confirm("Este item será excluído!\n\nDeseja confimar?")){
var removido = pai.removeChild(filho);
iCampos--;
}
}
// Função para multiplicar os campos qtdItem com valorUnitario
function multiplica() {
var trocaV = /,/g;
var trocaP = /\./g;
var txtValorTotalItemHidden = document.forms["form1"].elements["valorTotalItemHidden"];
var txtValorTotalNFHidden = document.forms["form1"].elements["valorTotalNFHidden"];
var txtValorTotalNF = document.forms["form1"].elements["valorTotalNF"];
var txtCodProduto = document.forms["form1"].elements["codProduto"];
var txtQtdItem = document.forms["form1"].elements["qtdItem"];
var txtValorUnitario = document.forms["form1"].elements["valorUnitario"];
var txtValorTotalItem = document.forms["form1"].elements["valorTotalItem"];
var iLoop;
for (iLoop = 0; iLoop < txtCodProduto.length; iLoop++){
if ((isNaN(txtQtdItem[iLoop].value)) || (isNaN(txtValorUnitario[iLoop].value.replace(trocaV,".")))) {
alert("Preencha os valores corretamente!");
} else {
txtValorTotalItemHidden[iLoop].value = parseFloat(txtQtdItem[iLoop].value.replace(trocaV,".")) * parseFloat(txtValorUnitario[iLoop].value.replace(trocaV,"."));
//txtValorTotalNFHidden[iLoop].value = parseFloat(txtValorTotalNFHidden[iLoop].value.replace(trocaV,".")) + parseFloat(txtValorTotalItemHidden[iLoop].value.replace(trocaV,"."));
}
if (txtValorTotalItemHidden[iLoop].value > 0) {
txtValorTotalItem[iLoop].value = (new Number (txtValorTotalItemHidden[iLoop].value)).toFixed(2);
txtValorTotalItem[iLoop].value = txtValorTotalItem[iLoop].value.toString().replace(trocaP,",");
//txtValorTotalNF[iLoop].value = parseFloat(txtValorTotalNF[iLoop].value.replace(trocaV,".")) + parseFloat(txtValorTotalItemHidden[iLoop].value.replace(trocaV,"."));
//alert ("txtValorTotalNFHidden: " + txtValorTotalNFHidden[iLoop].value);
} else {
txtValorTotalItem[iLoop].value = "";
}
}
alert ("txtValorTotalNF: " + txtValorTotalNF.value);
}
// Valida os campos requeridos do formulário de itens da NF
function validaForm(){
var txtCodProduto = document.forms["form1"].elements["codProduto"];
var txtQtdItem = document.forms["form1"].elements["qtdItem"];
var txtValorUnitario = document.forms["form1"].elements["valorUnitario"];
var iLoop;
var txtNumNF = document.forms["form1"].elements["numNF"];
var txtDataEmissaoNF = document.forms["form1"].elements["dataEmissaoNF"];
if (txtNumNF.value == ""){
alert("Favor preencher o campo N°. NF! ");
txtNumNF.focus();
return false;
}
if (txtDataEmissaoNF.value == ""){
alert("Favor preencher o campo Data Emissão! ");
return false;
}
for (iLoop = 0; iLoop<txtCodProduto.length; iLoop++){
if (txtCodProduto[iLoop].value == ''){
alert("Favor preencher o campo CÓDIGO do item "+ iLoop + ".");
txtCodProduto[iLoop].focus();
return false;
}
if (txtQtdItem[iLoop].value == ''){
alert("Favor preencher o campo QUANTIDADE do item "+ iLoop + ".");
txtQtdItem[iLoop].focus();
return false;
}
if (txtValorUnitario[iLoop].value == ''){
alert("Favor preencher o campo VALOR UNITÁRIO do item "+ iLoop + ".");
txtValorUnitario[iLoop].focus();
return false;
}
}
return true;
}
</script>
</head>
<body>
<form name="form1" id="form1" action="" method="post" onSubmit="return validaForm();">
<input type="button" value=" + " name="add_input" id="add_input" onClick="addInput();">
<table width="550" border="1" cellpadding="0" cellspacing="0" bordercolor="#999999" bgcolor="#FFFFFF">
<tr>
<td width="37" bordercolor="#FFFFFF" bgcolor="#CCCCCC" height="18"><div align="center" class="texto0">Item</div></td>
<td width="64" bordercolor="#FFFFFF" bgcolor="#CCCCCC" height="18"><div align="center" class="texto0">Código</div></td>
<td width="152" bordercolor="#FFFFFF" bgcolor="#CCCCCC" height="18"><div align="center" class="texto0">Produto</div></td>
<td width="38" bordercolor="#FFFFFF" bgcolor="#CCCCCC" height="18"><div align="center" class="texto0">Unid</div></td>
<td width="46" bordercolor="#FFFFFF" bgcolor="#CCCCCC" height="18"><div align="center" class="texto0">Qtd</div></td>
<td width="69" bordercolor="#FFFFFF" bgcolor="#CCCCCC" height="18"><div align="center" class="texto0">Valor Unit</div></td>
<td width="81" bordercolor="#FFFFFF" bgcolor="#CCCCCC" height="18"><div align="center" class="texto0">Valor Total</div></td>
<td width="50" bordercolor="#FFFFFF" bgcolor="#CCCCCC" height="18"><div align="center" class="texto0">Excluir</div></td>
</tr>
</table>
<table width="550" border="1" cellpadding="0" cellspacing="0" bordercolor="#999999" bgcolor="#FFFFFF">
<tr>
<td bordercolor="#FFFFFF" bgcolor="#FFFFFF"><div id="camposTexto"></div><input type="hidden" name="hidden1" id="hidden1" value=""></td>
</tr>
<tr>
<td><input type="text" name="valorTotalNF" size="10"></td>
</tr>
</table>
<br>
<br>
<input type="submit" value="Enviar">
</form>
</body>
</html>
Pergunta
igorfv
Bom dia amigos,
Tenho um javascript que cria linhas com campos de text de um form atraves de um bt. Em cada linha existem 4 campos (codProduto, QtdItem, valorUnitario, valorTotalItem), neste JS tb multiplico os campos QtdItem e ValorUnitario e mostro o resultado no campo valorTotalItem. Até ai tudo funciona certinho, mas agora estou querendo somar todos os valores do campo valorTotalItem de cada linha e mostrar em outro campo fixo no form, que é o valorTotalNF.
Como poderia armazenar estes valores e depois mostrar neste campo??
Tentei fazer, mas não consegui...
Abaixo segue o código:
Vlw..
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.