Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Deltazero

Como executar função assim que uma div se altera?

Recommended Posts

Boa tarde galera, estou com um problema, sou novo na área e estou desenvolvendo um sistema para o meu negocio, o problema seria quando eu seleciono as opções dos selects gostaria que ele retornasse a soma dos valores, porem não consegui de forma alguma ai passei os valores para duas divs ocultas e executo outra função para somar os valores das divs, só que além de não estar calculando assim que a div recebe o valor só consigo ver os valores com o onmouseover... o que eu poderia fazer para simplificar isto?

 

pedidos.php

 

<!DOCTYPE html>
<html lang="pt-br">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
	<title>Seven Seas - V1</title>
	
	<link rel="stylesheet" type="text/css" href="css/jquery-ui.min.css">
	<!--Import Google Icon Font-->
    <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <!--Import materialize.css-->
    <link type="text/css" rel="stylesheet" href="css/materialize.min.css"  media="screen,projection"/>
</head>
<body>
<nav>
    <div class="nav-wrapper cyan accent-4">
      <a href="#!" class="brand-logo center"> Seven Seas</a>
      <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons">menu</i></a>
      <ul class="right hide-on-med-and-down">
        <li><a href="index.php">Clientes</a></li>
        <li><a href="cadastro.php">Cadastro</a></li>
        <li class="active"><a href="pedidos.php">Novos Pedidos</a></li>   
      </ul>
      <ul class="side-nav" id="mobile-demo">
        <li><a href="index.php">Clientes</a></li>
        <li><a href="cadastro.php">Cadastro</a></li>
        <li class="active"><a href="pedidos.php">Novos Pedidos</a></li>
      </ul>
    </div>
  </nav>
<div class="card">
    	<div class="container">
    	<div class="row">

			<div class="input-field col l12 m12 s12">

			<label for="busca"><i class="material-icons">search</i> Indique o nome do Cliente</label>
			<input type="text" id="busca" onblur="AtualizaInputs();">
			</div>
		</div>
		</div>


			<div class="row">
				<div class="divider"></div>
			</div>
			<br>
				<div class="container">
					<div class="row">


						<form action="p_novos.php" method="POST">
							
						    <div class="input-field col l12 m6 s12">
						        <label for="data_cadastro"><i class="material-icons">today</i> Data do Pedido</label>
						        <input type="date" class="datepicker" id="data_pedido" name="data_pedido" value	="<?=date('Y-m-d')?>">
						        <br>
						    </div>
						       <div class="input-field col l6 m6 s12">
						   	
			 				<select name="servicos" id="servicos" onchange="valorPedidos(this.value);" onmouseup="verValor();">
								<option value="0" disabled selected>Selecione um Serviço</option>
								<option value="Formatação Simples">Formatação Simples</option>
								<option value="Formatação com Backup">Formatação com Backup</option>
								<option value="Recuperação de Pendrive">Recuperação de Pendrive</option>
								<option value="Recuperação de HD">Recuperação de HD</option>
							</select>
							<label for="servicos">Serviços</label>
								</div>

								<div class="input-field col l6 m6 s12">
									<select name="recDados" id="rec" onchange="valorExtra(this.value)" onclick="verValor();">
										<option value="0" disabled selected>Sem Recuperação de Dados</option>
										<option value="REC - 2GB">REC - 2GB</option>
										<option value="REC - 8GB">REC - 8GB</option>
										<option value="REC - 16GB">REC - 16GB</option>
										<option value="REC - 16GBup">REC - 16GB+</option>
									</select>
									<label for="rec">Recuperação de Dados</label>
								</div>
								<div id="valor" style="display: none;" class="col s12 m12 l12" onchange="verValor();">
								</div>
								<div id="valor2" style="display: none;" class="col s12 m12 l12">
								</div>
								
								
								<div class="input-field col l3 m6 s12">
									<i class="material-icons prefix">credit_card</i>
									<input type="text" id="svalor" onmouseover="verValor();" name="valor" placeholder="...">
									<label for="svalor">Valor</label>
								</div>
								<div class="input-field col s12 m12 l12">
						          <i class="material-icons prefix">mode_edit</i>
						          <textarea id="obs" name="obs" class="materialize-textarea"></textarea>
						          <label for="obs">Observações</label>
						        </div>
								
								<div class="input-field col l12 m12 s12 right-align">
								 	<input type="hidden" id="nomep" name="nomep">
			 					 	<input type="submit" class="waves-effect waves-light btn" value="Fazer Pedido" >
			 					 	<br>
								</div>
								

			 			
			 					</form>
  	
  		</div>
	
	</div>
<br>
</div>
<footer class="page-footer  cyan accent-4">
  <div class="footer-copyright">
  <div class="container center">
  <strong>Desenvolvido por Seven Seas</strong>
  </div>
  </div>
</footer>
<script
  src="https://code.jquery.com/jquery-3.1.1.min.js"
  integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
  crossorigin="anonymous"></script>
    <script
  src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
  integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU="
  crossorigin="anonymous"></script>
    <script type="text/javascript" src="js/materialize.js"></script>
	<script type="text/javascript" src="js/custom2.js" charset="utf-8"></script>
<script>
	
</script>
<script>
	 function AtualizaInputs() {
    Materialize.updateTextFields();
  };
</script>
<script>
	$( document ).ready(function(){
		$('select').material_select();
		 $(".button-collapse").sideNav();
		 $('.datepicker').pickadate({
		    selectMonths: true, // Creates a dropdown to control month
		    selectYears: 15 // Creates a dropdown of 15 years to control year
		  });
		});
</script>
<script>
	function valorPedidos(str) {
    if (str == "") {
        document.getElementById("valor").innerHTML = "";
        return;
    } else { 
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("valor").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","v_pedido.php?q="+str,true);
       

        xmlhttp.send();

    }
}
</script>
<script>
	function valorExtra(str) {
    if (str == "") {
        document.getElementById("valor2").innerHTML = "";
        return;
    } else { 
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("valor2").innerHTML = this.responseText;
            }
        };
       
        xmlhttp.open("GET","e_pedido.php?e="+str,true);

        xmlhttp.send();

    }
}
</script>
<script>
	function verValor(){
		var valor1 = Number(document.getElementById("valor").innerHTML);
		var valor2 = Number(document.getElementById("valor2").innerHTML);
		$('#svalor').val(valor1+valor2);
	}
</script>
<script>
	function pegarDataAtual(){
   data = new Date();
   document.getElementById('data_pedido').value = data.getDay()+'/'+data.getMonth()+'/'+data.getFullYear();
}
</script>
</body>
</html>

e_pedido.php

 

<?php 

include 'conecta.php';

$e = strval($_GET['e']);


$sql = "SELECT * FROM tab_precos WHERE pedido = '$e'";
$result = mysqli_query($conn, $sql);


if (mysqli_num_rows($result) > 0){
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
     $valor2 = $row['extra'];
   
        echo $valor2;
    }
} else {

     	echo 0;
}



mysqli_close($conn);
?>

v_pedido.php

<?php 

include 'conecta.php';

$q = strval($_GET['q']);

$sql = "SELECT * FROM tab_precos WHERE pedido = '".$q."'";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0){
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
     $valor1 = $row['valor'];
   
        echo $valor1;
    }
} else {
     	echo 0;
}



mysqli_close($conn);
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Estou com um problema de cálculo que não estou conseguindo resolver.
       
      Tenho uma rotina em Javascript que faz o seguinte cálculo qtde x vrUnit = total.
       
      qtde   x  vrUnit    =    total
      1,23   x  1,00       =    1,23    << até aqui tudo bem.
       
      o problema seria fazer o arredondamento para cima para impedir de fazer este cálculo:
      0,01 x 0,01 = 0,0001
       
      para digitar o valor estou utilizando esta função:
       
      /*Esta função quando o usuário digitar o valor aparece * 1,23 */ function formataDigitacao(i) { //Adiciona os dados para a másrcara var decimais = 2; var separador_milhar = '.'; var separador_decimal = ','; var decimais_ele = Math.pow(10, decimais); var thousand_separator = '$1'+separador_milhar; var v = i.value.replace(/\D/g,''); v = (v/decimais_ele).toFixed(decimais) + ''; var splits = v.split("."); var p_parte = splits[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, thousand_separator); (typeof splits[1] === "undefined") ? i.value = p_parte : i.value = p_parte+separador_decimal+splits[1]; } /*Esta função faz a multiplicação entre Valor Unitário X Quantidade *faz a multiplicação correta */ function calcProd(){ //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Obter valor digitado do produto var valor_unit = document.getElementById("vlrunit").value; //Remover ponto e trocar a virgula por ponto while (valor_unit.indexOf(".") >= 0) { valor_unit = valor_unit.replace(".", ""); } valor_unit = valor_unit.replace(",","."); //Calcula o Valor do Desconto if (valor_unit > 0 && prod_qtde > 0) { calc_total_produto = (parseFloat(valor_unit) * parseFloat(prod_qtde)); var numero = calc_total_produto.toFixed(2).split('.'); //<<== aqui faço o arredondamento das casas decimais de 1,234 p/ 1,23 numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("vlrtotal").value = numero.join(','); } else { if (valor_unit > 0) { document.getElementById("vlrtotal").value = document.getElementById("vlrunit").value; } else { document.getElementById("vlrtotal").value = "0,00"; } } } Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Desculpa postar minha dúvida, fiz várias pesquisa mas não tive sucesso.
       
      Como faço para capturar o ID do SELECT selecionado e passar para base_url ?
       
      Exemplo:
      após selecionar o ID passar para <?php echo base_url();?>estoque/ajuste/adicionar/ <== passar o ID aqui.
       
      <div class="col-md-6"> <label for="tipoDepart" class="control-label">Departamento:</label> <select name="tipoDepart" id="tipoDepart" style="width:100%;" class="form-control"> <option value="">Selecione um Departamento</option> <?php foreach ($dprts as $dp) { echo '<option value="'.$dp->idDepartamento.'">'.$dp->departamento.'</option>'; } ?> </select> </div> <div class="col-md-6"> <div class="card card-entrad"> <div class="card-header"> <label class="card-tlentr">Entrada - Estoque</label> </div> <div class="card-body"> <div style="text-align:center;"> <a href="<?php echo base_url();?>estoque/ajuste/adicionar/" <== COMO PASSO O ID SELECIONADO AQUI, PARA ABRIR A PÁGINA COM O ID DO DPTO ? class="btn btn-cinza">Adicionar</a> </div> </div> </div> </div>  
      Observação: preciso capturar e passar o ID para gerar TABELA referente a cada departamento.
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Tem como passar para o Formulário um Campo vindo via AJAX no formato moeda ?
       
      Tenho uma rotina onde o usuário escolhe através de uma Lista na modal de Produtos e o sistema informa o formulário os seguintes campos:
      código | descrição | espécie | estoque atual.
       
      o estoque atual preciso passar nesse formato, para validação de quantidade: 15.00 ou 15,00.
      ou seja:
      converter de: 15 
      para: 15.00 com casas decimais

      tem como fazer isso ?
       
      Grato,
       
      Cesar
×

Informação importante

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