Ir para conteúdo
Fórum Script Brasil
  • 0

Somar valores de campos dinamicos e mostrar o resultado em outro...


igorfv

Pergunta

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:

<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'>&nbsp;<input type='text' name='codProduto' id='texto"+iCount+"' size='8' value=''class='text'>&nbsp;<input type='text' name='nomeProduto' id='texto"+iCount+"' size='22' value=''class='text'>&nbsp;<input type='text' name='unid' id='texto"+iCount+"' size='3' value=''class='text'>&nbsp;<input type='text' name='qtdItem' id='texto"+iCount+"' size='5' value='' class='text'>&nbsp;<input type='text' name='valorUnitario' id='texto"+iCount+"' size='8' value='' onblur='multiplica();' class='text'>&nbsp;<input type='text' name='valorTotalItem' id='texto"+iCount+"' size='11' value='' readonly='true' class='text'>&nbsp;<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>

Vlw..

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Faz assim, na hora q você seta o total do lado, pega o value do campo total e soma com o que tem la. Vai incrementando e exibindo o valor. só que você vai ter q se preocupar quando ele mudar a quantidade, preço ou a remoção de linhas. Terá que sempre atualizar la embaixo
Link para o comentário
Compartilhar em outros sites

  • 0
Faz assim, na hora q você seta o total do lado, pega o value do campo total e soma com o que tem la. Vai incrementando e exibindo o valor. só que você vai ter q se preocupar quando ele mudar a quantidade, preço ou a remoção de linhas. Terá que sempre atualizar la embaixo

Na teoria eu entendi, agora como poderei fazer isto no prática?

Vlw..

Link para o comentário
Compartilhar em outros sites

  • 0

nada mais é do que pegar os campos:

document.nome_do_form.nome_do_campo.value
suponha que este seja o campo total da primeira linha, pega o valor e seta o total geral, exemplo
document.nome_do_form.nome_total_geral.value += document.nome_do_form.nome_total_linha1.value

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...