Ir para conteúdo

POWERED BY:

Arquivado

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

TiagoMaker

[Resolvido] Não somar campos desabilitados

Recommended Posts

Dae pessoal, tenho um formulário onde cadastro varios produtos, somando a quantidade e o valor unitario para gerar o valor final, mas as vezes pode ser que não sejam inseridos todos os produtos que são listados por checkbox, e então eles não precism ser somados, com meu javascript atual se eu não preencher todos os campos fica aquele "NaN" exibido.

 

desabilita campos não selecionados

function Hab(valor){
var check = eval("document.cadastro.C"+valor)
if (check.checked) {
var campo = eval("document.cadastro.T"+valor+".disabled=false"); eval("document.cadastro.T"+valor+".focus();")
var campo = eval("document.cadastro.X"+valor+".disabled=false"); eval("document.cadastro.X"+valor+".focus();")

} else {
var campo = eval("document.cadastro.T"+valor+".disabled=true");
var campo = eval("document.cadastro.X"+valor+".disabled=true");
}
}
function Desabilita(){
for(i=0; i<document.forms[0].elements.length; i++)
if(document.forms[0].elements[i].type=="text"){
document.forms[0].elements[i].disabled=true;
}
}

soma os campos:

 

<script type="text/javascript">
function Calc(){
Valor1 = parseFloat(document.getElementById('vunit1').value);
Qt1 = parseFloat(document.getElementById('qt1').value);
Valor2 = parseFloat(document.getElementById('vunit2').value);
Qt2 = parseFloat(document.getElementById('qt2').value);
Valor3 = parseFloat(document.getElementById('vunit3').value);
Qt3 = parseFloat(document.getElementById('qt3').value);
Valor4 = parseFloat(document.getElementById('vunit4').value);
Qt4 = parseFloat(document.getElementById('qt4').value);
Valor5 = parseFloat(document.getElementById('vunit5').value);
Qt5 = parseFloat(document.getElementById('qt5').value);
Valor6 = parseFloat(document.getElementById('vunit6').value);
Qt6 = parseFloat(document.getElementById('qt6').value);
document.getElementById('resultado').value = (Valor1*Qt1+Valor2*Qt2+Valor3*Qt3+Valor4*Qt4+Valor5*Qt5+Valor6*Qt6).toFixed(2);
}
</script>

FORM:

 

<form id="form1" action="cadastro_grava.php" method="post" name="cadastro">
      <table align="center" width="421" border="0" style="border: solid 1px #000;">
        <tr>
          <td colspan="3" height="75" align="center"><b>DATA:</b>
            <br /><input name="data" type="text" value="<?php echo date("d/m/Y") ?>" size="10" maxlength="10" /></td>
          </tr>
        <tr>
          <td width="90" align="center"><b>MODELOS</b></td>
          <td width="163" align="center"><b>QUANT.</b></td>
          <td width="154" align="center"><b>VALOR UN.</b></td>
        </tr>
       <tr>
          <td align="left"><input type="checkbox" name="C1" value="1" onclick="Hab(this.value);" checked="checked"> 
            5949
</td>
          <td align="center"><input id="qt1" type="text" name="T1" size="8"></td>
          <td align="center"><input id="vunit1" type="text" name="X1" size="8"></td>
        </tr>
        <tr>
          <td align="left"><input type="checkbox" name="C2" value="2" onclick="Hab(this.value);" checked="checked"> 
            2613
</td>
          <td align="center"><input id="qt2" type="text" name="T2" size="8"></td>
          <td align="center"><input id="vunit2" type="text" name="X2" size="8"></td>
        </tr>
        <tr>
          <td align="left"><input type="checkbox" name="C3" value="3" onclick="Hab(this.value);" checked="checked"> 
            CE505
</td>
          <td align="center"><input id="qt3" type="text" name="T3" size="8"></td>
          <td align="center"><input id="vunit3" type="text" name="X3" size="8"></td>
        </tr>
        <tr>
          <td align="left"><input type="checkbox" name="C4" value="4" onclick="Hab(this.value);" checked="checked">
            T640
</td>
          <td align="center"><input id="qt4" type="text" name="T4" size="8"></td>
          <td align="center"><input id="vunit4" type="text" name="X4" size="8"></td>
        </tr>
        <tr>
          <td align="left"><input type="checkbox" name="C5" value="5" onclick="Hab(this.value);" checked="checked"> 
            7553
</td>
          <td align="center"><input id="qt5" type="text" name="T5" size="8"></td>
          <td align="center"><input id="vunit5" type="text" name="X5" size="8"></td>
        </tr>
        <tr>
          <td align="left"><input type="checkbox" name="C6" value="6" onclick="Hab(this.value);" checked="checked"> 
            2612
</td>
          <td align="center"><input id="qt6" type="text" name="T6" size="8"></td>
          <td align="center"><input id="vunit6" type="text" name="X6" size="8"></td>
        </tr>
        <tr>
          <td height="75" colspan="3" align="center"><b>VALOR TOTAL R$:</b>
            <br />
            <input name="vtotal" id="resultado" type="text" value="" size="10" maxlength="10" onfocus="Calc()" /></td>
          </tr>
        <tr>
          <td><b>VENCIMENTO DA FATURA:</b></td>
          <td colspan="2"><input name="vecimento" type="text" value="" size="10" maxlength="10" /></td>
          </tr>
        <tr>
          <td><b>N° DA NOTA FISCAL:</b></td>
          <td colspan="2"><input name="nf" type="text" value="" size="10" maxlength="12" /></td>
          </tr>
</table>

      </table>
      <p><?php 
    if ($_GET["msg"] == "sucesso") {
	echo "<h3>* LOJA CADASTRADA COM SUCESSO!</h3>";
				
	}
     else if ($_GET["msg"] == "alterado") {
	echo "<h3>* LOJA ALTERADA COM SUCESSO!</h3>";
	}
?></p>
      <p align="center">
          <br />
      <input type="hidden" name="codigo" value="<?php echo $dados[id_recebimento]?>">
        <?php
if ($_GET[id] > 0)
{
	echo '<input id="bt" type="submit" name="bt" value="ALTERAR"> ';
	echo '<input type="submit" name="bt" value="NOVO">';
}
else
	echo '<input id="bt" type="submit" name="bt" value="CADASTRAR"> ';
?>
        </p><br />
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dae galera! Consegui fazer o procedimento, consegui colocar campo a campo, com soma aumatica, e em moeda! Vou compartilhar a função com voces!

 

<script type="text/javascript">
addEvent = function(o, e, f, s) {
   var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d;
   r[r.length] = [f, s || o], o[e] = function(e){
      try{
         (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
         e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
         e.target || (e.target = e.srcElement || null);
         e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
      }catch(f){}
      for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false));
      return e = null, !!d;
    }
};

function formatCurrency(o, n, dig, dec) {
   o.c = !isNaN(n) ? Math.abs(n) : 2;
   o.dec = typeof dec != "string" ? "," : dec, o.dig = typeof dig != "string" ? "." : dig;
   addEvent(o, "keypress", function(e) {
      if (e.key > 47 && e.key < 58) {
         var o, s, l = (s = ((o = this).value.replace(/^0+/g, "") + String.fromCharCode(e.key)).replace(/\D/g, "")).length, n;
         if(o.maxLength + 1 && l >= o.maxLength) return false;
         l <= (n = o.c) && (s = new Array(n - l + 2).join("0") + s);
         for(var i = (l = (s = s.split("")).length) - n; (i -= 3) > 0; s[i - 1] += o.dig);
         n && n < l && (s[l - ++n] += o.dec);
         o.value = s.join("");
      }
      e.key > 30 && e.preventDefault();
   });
}

function fmtMoney(n, c, d, t){
   var m = (c = Math.abs(c) + 1 ? c : 2, d = d || ",", t = t || ".",
      /(\d+)(?:(\.\d+)|)/.exec(n + "")), x = m[1].length > 3 ? m[1].length % 3 : 0;
   return (x ? m[1].substr(0, x) + t : "") + m[1].substr(x).replace(/(\d{3})(?=\d)/g,
      "$1" + t) + (c ? d + (+m[2] || 0).toFixed(c).substr(2) : "");
};

function soma() {
  var f = document.forms[0];
  var qt1 = parseFloat(f.qt1.value.replace('.','').replace(',','.'));
  var vunit1 = parseFloat(f.vunit1.value.replace('.','').replace(',','.'));
  var qt2 = parseFloat(f.qt2.value.replace('.','').replace(',','.'));
  var vunit2 = parseFloat(f.vunit2.value.replace('.','').replace(',','.'));
  var qt3 = parseFloat(f.qt3.value.replace('.','').replace(',','.'));
  var vunit3 = parseFloat(f.vunit3.value.replace('.','').replace(',','.'));
  var qt4 = parseFloat(f.qt4.value.replace('.','').replace(',','.'));
  var vunit4 = parseFloat(f.vunit4.value.replace('.','').replace(',','.'));
  var qt5 = parseFloat(f.qt5.value.replace('.','').replace(',','.'));
  var vunit5 = parseFloat(f.vunit5.value.replace('.','').replace(',','.'));
  var qt6 = parseFloat(f.qt6.value.replace('.','').replace(',','.'));
  var vunit6 = parseFloat(f.vunit6.value.replace('.','').replace(',','.'));
  var valor3 = ('' + ((qt1||0) * (vunit1||0) + (qt2||0) * (vunit2||0) + (qt3||0) * (vunit3||0) + (qt4||0) * (vunit4||0) + (qt5||0) * (vunit5||0) + (qt6||0) * (vunit6||0)));
  f.resultado.value = fmtMoney(valor3);
}

window.onload = init;
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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