Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Problema con calculo de campos dinamicos creados en javascript

Estas en el tema de Problema con calculo de campos dinamicos creados en javascript en el foro de Jquery en Foros del Web. Hola y buenos días, tengo un problema con un sistema web, en especifico en una tabla dentro de la cual al pulsar un botón se ...
  #1 (permalink)  
Antiguo 15/03/2014, 11:11
Avatar de carlosbarbiero  
Fecha de Ingreso: diciembre-2011
Mensajes: 8
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Problema con calculo de campos dinamicos creados en javascript

Hola y buenos días, tengo un problema con un sistema web, en especifico en una tabla dentro de la cual al pulsar un botón se crea una fila con 5 campos de texto en los cuales debo introducir valores, en el penúltimo campo de la fila tengo que hacer una multiplicación del valor introducido en el tercer campo por X cantidad (el valor X por el que multiplicare no es lo importante porque ya lo tengo), en la primera fila si me realiza el calculo pero a partir de la segunda no lo hace... yo se solo lo basico de javascript por lo que he intentado miles de cosas pero nada ha funcionado.

para que tengan una mejor idea acá les dejo el código que genera la fila con los campos en javascript:

Código HTML:
function nueva_linea() {
	$("#lineas").append('<tr>');
	$("#lineas").append('<td> <input type="text" class="importe_linea" name="valorx[]" id="desde" value=""/>');
	$("#lineas").append('<td> <input type="text" class="importe_linea" name="valorA[]" id="hasta" value=""/>');
	$("#lineas").append('<td> <input type="text" class="utxhect" id="utxhect" name="valorB[]" onchange="calcular_total()" value=""/>');
	$("#lineas").append('<td> <input type="text" class="importe_linea" id="bolivares"/>');
	$("#lineas").append('<td> <input type="text" class="importe_linea" id="opc" value=""/>');
	$("#lineas").append('</tr>');
}
continuo, el campo utxhect es en el cual se va introducir el valor, y el campo bolivares es en el cual se va a calcular la multiplicacion, para eso uso la siguiente funcion de javascript:

Código HTML:
function calcular_total() {
	importe_total = 0
	$("#utxhect").each(
		function(index, value) {
			importe_total = document.getElementById('utxhect').value * Xcantidad;
		}
	);
	$("#bolivares").val(importe_total);
	
}
Xcantidad es un valor extraido de la base de datos con php y si funciona puse Xcantidad solo de ejemplo. ahora les colocare una imagen donde se ve claramente que es lo que sucede:



la columna marcada en rojo es donde debería realizar el calculo, se ve claramente que en la primera fila si lo realiza pero a partir de la segunda no lo hace.

de antemano gracias por la ayuda que me puedan brindar, y espero que me explicase claramente. nuevamente gracias.

Pdta aca les pongo el código completo:

Código:
 <?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="all" />
<link href="../images/mas.png" rel="shortcut icon" type="image/x-icon" />
<link rel="stylesheet" href="../css/styleconsultas.css" type="text/css" media="screen"/>

<title>.:SICCI:.</title>
 <?php 
 	$anoelecto= $_REQUEST["Anoelecto"]; 
 	include("../modelo/conexion.php");
	$conexion=Crear_Conexion('localhost','root','root');
			
	/*CONSULTA PARA CALCULAR CUANTOS BOLIVARES EQUIVALEN LA CANTIDAD DE UTs*/
	$a="select * from unidadtributaria where ano = ".$_REQUEST["Anoelecto"]."";
	$b=Consulta_BD($a,'impuesto',$conexion);
	$c=Obtener_Resultados($b);
	$valorUT=$c["valor"];/*valor de en bs de la UT actual*/
 
 
 ?>   
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
function calcular_total() {
	importe_total = 0
	$("#utxhect").each(
		function(index, value) {
			importe_total = document.getElementById('utxhect').value;
		}
	);
	$("#bolivares").val(importe_total);
	
}
 
function nueva_linea() {
	$("#lineas").append('<tr>');
	$("#lineas").append('<td> <input type="text" class="importe_linea" name="valorx[]" id="desde" value=""/>');
	$("#lineas").append('<td> <input type="text" class="importe_linea" name="valorA[]" id="hasta" value=""/>');
	$("#lineas").append('<td> <input type="text" class="utxhect" id="utxhect" name="valorB[]" onchange="calcular_total()" value=""/>');
	$("#lineas").append('<td> <input type="text" class="importe_linea" id="bolivares"/>');
	$("#lineas").append('<td> <input type="text" class="importe_linea" id="opc" value=""/>');
	$("#lineas").append('</tr>');
}
</script>

</head>
<body style="background: #666;" onLoad="adicionarFila()">
<?php
//se compara si existe iniciada una sesion de usuario 
if (isset($_SESSION['k_username']))
{
	
	
	
?>
    <div id="tope2">
   		<img src="../images/LOGO2.png" width="46%" height="auto" style="margin-left:2%; margin-top:0.5%; float:left"/>
    </div>
  <div id="contenedor">
   <form id="formElem" name="formElem" action="../controlador/procesartabejidoruralabterior.php" onsubmit="return validacion(this)">
            	<legend style="text-align:center">Registro de Tabuladores de Años Anteriores</legend>
                 
                

			<input name="cont" type="hidden" id="cont" value="0" > 
                <input name="filas" type="hidden" id="filas" value="" > 
                <div id="mostradorUT" style="margin-bottom:1%">Costo de Unidad Tributaria en el año <?php echo $anoelecto;?>: <?php echo $valorUT;?>Bs.F</div>           
                <table width="80%" border="1" align="center" bordercolor="#fff"  id="contenido" style="top:10%"> 
                 <caption align="top" style=" border:#fff solid 1px; -webkit-border-top-right-radius: 12px;
        -webkit-border-top-left-radius: 12px; padding: 5px 5px; color:#FFF; font-weight:bold; background: url(menu_files/css3menu1/mainbk.png);">
            <span class="texto_Encabezados">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            Año <input id="ano" name="ano" value="<?php echo $anoelecto;?>" style="background:none; border:hidden; color:#FFF; font-weight:bold; font-family:'Century Gothic', Helvetica, sans-serif; font-size:16px; width:auto" readonly="readonly"/>
            </span>
            </caption> 
  <tr align="center" bgcolor="#666" style="color:#FFF" >
    <td style="font-size:16px; font-weight: bolder" width="20%">Desde</td>
     <td style="font-size:16px; font-weight: bolder" width="20%">Hasta</td>
     <td style="font-size:16px; font-weight: bolder" width="20%">UT por Hectareas</td>
    <td style="font-size:16px; font-weight: bolder">Bs.F</td>
    <td style="font-size:16px; font-weight: bolder">Opciones</td>
  </tr>
   <tbody id="lineas">
  </tbody>
			<tr bgcolor="#F1F1F1" onMouseOver="this.style.backgroundColor='#DCDCDC';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#F1F1F1'"o"];">
    <tr style=" background: #CCC; border:#FFF 1px solid; -webkit-border-bottom-right-radius: 12px;
        -webkit-border-bottom-left-radius: 12px; border-collapse:collapse">
    	<td colspan="6">
        	<div id="Boton" align="center" style="margin-top:8px">
     			 <input name="button" type="button" class="button" value="Agregar Renglón"  onclick="nueva_linea(), calcular_total()"/>
                 <input name="guardar" type="submit" value="Guardar" class="button"/>
                 <a href="seleccionanos.php"><input name="guardar" type="button" value="Atrás" class="button"/></a>
                 <a href="menu.php"><input name="guardar" type="button" value="Inicio" class="button"/></a>
       		</div>
        </td>
    </tr>
  </table>
  </form>
  </div>
<?php }
else
{ //si no existe iniciada una sesion de usuario envia a la Pag Principal 
	echo '<script language="javascript"> location.href="../index.html";</script>';
}
?>
</body>
</html>
  #2 (permalink)  
Antiguo 16/03/2014, 13:02
 
Fecha de Ingreso: agosto-2013
Mensajes: 150
Antigüedad: 10 años, 8 meses
Puntos: 29
Respuesta: Problema con calculo de campos dinamicos creados en javascript

Código Javascript:
Ver original
  1. function calcular_total() {
  2.         $("input[name=valorB]").each(
  3.            function(index, value) {
  4.              var importe_total = document.getElementsByName('valorB')[index].value;
  5.              document.getElementsByName("bolivares")[index].value = importe_total;
  6.            }
  7.         );
  8.       }
  9.       /**
  10.        * ¡IMPORTANTE! todos tus id tienen el mismo valor.
  11.        * Los id deben ser únicos, si quieres usarlos para el cálculo busca el
  12.        * modo de colocarles un incremento. Yo he utilizado name[index] = valor.
  13.        */
  14.       function nueva_linea() {
  15.         $("#lineas").append('<tr>');
  16.         $("#lineas").append('<td><input type="text" class="importe_linea" name="valorx[]" id="desde" value=""/>');
  17.         $("#lineas").append('<td><input type="text" class="importe_linea" name="valorA[]" id="hasta" value=""/>');
  18.         // estas 2 líneas con cambios
  19.         $("#lineas").append('<td><input type="text" class="utxhect" id="utxhect" name="valorB" onchange="calcular_total()" value=""/>');
  20.         $("#lineas").append('<td><input type="text" class="importe_linea" id="bolivares" name="bolivares" />');
  21.        
  22.         $("#lineas").append('<td><input type="text" class="importe_linea" id="opc" value=""/>');
  23.         $("#lineas").append('</tr>');
  24.       }
  #3 (permalink)  
Antiguo 16/03/2014, 19:57
Avatar de carlosbarbiero  
Fecha de Ingreso: diciembre-2011
Mensajes: 8
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema con calculo de campos dinamicos creados en javascript

Muchas gracias bathorz, si que me sirvió me has salvado de este atasco jejejeje gracias de verdad

Etiquetas: campo, dinamico, html, javascript, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:12.