Olá a todos! Estou tratando de fazer uma multiplicação entre valores de input´s, a questão é que criei os input com php da seguinte forma:
while($row2 = mysql_fetch_array($resul2))
{
echo '<td><div align="center"><input Id="PU'.$cont2.'" type="text" name="PU" size="15" maxlength="15" value=0 onChange="multiplicar(this);">';
echo '<input Id="VOL'.$cont2.'" type="text" name="VOL" size="10" maxlength="10" value=0 onChange="multiplicar(PU'.$cont2.',VOL'.$cont2.',IMP'.$cont2.');">';
echo '<input Id="IMP'.$cont2.'" type="text" name="IMP" size="15" maxlength="15" disabled="disabled" />';
$cont2 = $cont2 + 1;
}
E quando se executa o script multiplicar passo os ID dos Input’s
Porém, como dizer que tome o valor das variáveis e não o nome das variáveis script.
<SCRIPT>
<!--
function multiplicar(PU,VOL,IMP) {
m1 = document.getElementById(PU).value; (o parâmetro é o ID do input)
m2 = document.getElementById(VOL).value;
r = m1*m2;
document.getElementById(IMP).value = r;
}
//-->
</SCRIPT>
Olá,
Vamos ver conseguirei explicar:
Você tem a função multiplicar(PU,VOL,IMP) a qual recebe 3 parâmetros, por conseguinte quando se chama a função se deve passar 3 parâmetros e no input com Id="PU'.$cont2..'" você está passando somente um parâmetro.
Por outro lado, a função getElementById tem aspas simples, exemplo document.getElementById('PU').value; e em um evento de um input só pode passar su próprio valor, portanto no evento onChange do input com Id="VOL'.$cont2.'" você não pode passar o valor de outro input.
O correto é:
Da parte de php não sei dizer se você está escrevendo bem o código.
function multiplicar(cont) { //Passa o valor variável, que é o contador
eval("var m1 = document.getElementById('PU"+cont+"').value") // Realiza uma avaliação do conteúdo já que tem um valor variável
eval("var m2 = document.getElementById('VOL"+cont+"').value"); // Observe que o valor do id a buscar tem que ir entre aspas simples
var r = m1*m2;
eval("document.getElementById('IMP"+cont+"').value = r");
}
Trate de colocar a palavra reversa var quando criar uma nova variável, isso pode evitar muitas dores de cabeça quando manejar vários scripts.
Espero ter lhe ajudado.
Por Cristian Guerra