powerPT Posted March 14, 2009 at 07:09 PM Report Share #250714 Posted March 14, 2009 at 07:09 PM Já pesquisei sobre o assunto mas não encontrei nenhuma solução válida. Tenho um formulário em que tem x campos e mediante um evento qualquer (não importa) faz a soma dos tais campos. O problema é que usando esta função: function soma_total() { resultado = parseInt(document.getElementById("valor_senior").value) + parseInt(document.getElementById("valor_senior2125").value) + parseInt(document.getElementById("valor_veterano").value) + parseInt(document.getElementById("valor_superveterano").value) + parseInt(document.getElementById("valor_senhora").value) + parseInt(document.getElementById("valor_junior").value) + parseInt(document.getElementById("valor_h_apa").value) + parseInt(document.getElementById("valor_h_suplm").value) + parseInt(document.getElementById("valor_ap_apa").value) + parseInt(document.getElementById("valor_ap_suplm").value); document.getElementById("valor_total").value = resultado; } O resultado escrito no textfield "valor_total" é NaN. Alguém pode-me ajudar? Ainda por cima tenho somais parciais e tudo funciona. Até posso mostrar a tal outra função: function soma_parcial(pessoas,custo,campo) { resultado = parseInt(document.getElementById(pessoas).value) * parseInt(custo); document.getElementById(campo).value = resultado; } MD Link to comment Share on other sites More sharing options...
djthyrax Posted March 14, 2009 at 09:45 PM Report Share #250745 Posted March 14, 2009 at 09:45 PM Só vendo o código completo enviado para o cliente. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
powerPT Posted March 14, 2009 at 09:52 PM Author Report Share #250748 Posted March 14, 2009 at 09:52 PM Cá está: <!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" /> <title>Inscrição Mundial</title> <style> h1 { font-size: 18px; } h2 { font-size: 15px; } h6 { font-size: 11px; font-weight:normal; margin: 0; } body, td, th { font-family: Verdana, Geneva, sans-serif; font-size: 12px; } </style> <script type="text/javascript"> function soma_parcial(pessoas,custo,campo) { resultado = parseInt(document.getElementById(pessoas).value) * parseInt(custo); document.getElementById(campo).value = resultado; soma_total(); } function soma_total() { resultado = parseInt(document.getElementById("valor_senior").value) + parseInt(document.getElementById("valor_senior2125").value) + parseInt(document.getElementById("valor_veterano").value) + parseInt(document.getElementById("valor_superveterano").value) + parseInt(document.getElementById("valor_senhora").value) + parseInt(document.getElementById("valor_junior").value) + parseInt(document.getElementById("valor_h_apa").value) + parseInt(document.getElementById("valor_h_suplm").value) + parseInt(document.getElementById("valor_ap_apa").value) + parseInt(document.getElementById("valor_ap_suplm").value); document.getElementById("valor_total").value = resultado; } function validar(campo) { var valor = document.getElementById(campo).value; if (valor == "") { document.getElementById(campo).bgColor = "red"; } } </script> </head> </head> <body> <form method="post" name="inscr"> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="8"><h1>PREÇOS </h1></td> </tr> <tr bgcolor="#d4d2fa"> <td width="510" bgcolor="#d4d2fa"><h2> </h2></td> <td width="44" align="right" bgcolor="#d4d2fa"> </td> <td width="13" align="center" bgcolor="#d4d2fa"> </td> <td width="54" align="center" bgcolor="#d4d2fa"><h4>Nº de Pessoas</h4></td> <td width="16" align="center" bgcolor="#d4d2fa"><h4> </h4></td> <td width="46" align="right" bgcolor="#d4d2fa"><h4>Total Parcial</h4></td> <td width="20" bgcolor="#d4d2fa"> </td> <td width="407"> </td> </tr> <tr bgcolor="#e1e0f1"> <td bgcolor="#e1e0f1">Sénior</td> <td align="right" bgcolor="#e1e0f1">545€</td> <td width="13" align="center" bgcolor="#e1e0f1">x</td> <td align="center" bgcolor="#e1e0f1"><label> <input name="senior_pessoas" type="text" id="senior_pessoas" onchange="javascript:soma_parcial('senior_pessoas','545','valor_senior');" value="0" size="3" /> </label></td> <td align="center" bgcolor="#e1e0f1">=</td> <td align="right" bgcolor="#e1e0f1"><input name="valor_senior" type="text" id="valor_senior" size="7" readonly="readonly" /></td> <td bgcolor="#e1e0f1">€</td> <td bgcolor="#e1e0f1"> </td> </tr> <tr bgcolor="#ebeafc"> <td bgcolor="#ebeafc">Sénior (21-25)*</td> <td align="right" bgcolor="#ebeafc">295€</td> <td width="13" align="center" bgcolor="#ebeafc">x</td> <td align="center" bgcolor="#ebeafc"><input name="senior2125_pessoas" type="text" id="senior2125_pessoas" onchange="javascript:soma_parcial('senior2125_pessoas','295','valor_senior2125');" value="0" size="3" /></td> <td align="center" bgcolor="#ebeafc">=</td> <td align="right" bgcolor="#ebeafc"><input name="valor_senior2125" type="text" id="valor_senior2125" size="7" readonly="readonly" /></td> <td bgcolor="#ebeafc">€</td> <td> </td> </tr> <tr bgcolor="#e1e0f1"> <td>Veterano</td> <td align="right">425€</td> <td width="13" align="center">x</td> <td align="center"><input name="veterano_pessoas" type="text" id="veterano_pessoas" onchange="javascript:soma_parcial('veterano_pessoas','425','valor_veterano');" value="0" size="3" /></td> <td align="center">=</td> <td align="right"><input name="valor_veterano" type="text" id="valor_veterano" size="7" readonly="readonly" /></td> <td>€</td> <td> </td> </tr> <tr bgcolor="#ebeafc"> <td>Super Veterano</td> <td align="right">255€</td> <td width="13" align="center">x</td> <td align="center"><input name="superveterano_pessoas" type="text" id="superveterano_pessoas" onchange="javascript:soma_parcial('superveterano_pessoas','255','valor_superveterano');" value="0" size="3" /></td> <td align="center">=</td> <td align="right"><input name="valor_superveterano" type="text" id="valor_superveterano" size="7" readonly="readonly" /></td> <td>€</td> <td> </td> </tr> <tr bgcolor="#e1e0f1"> <td bgcolor="#e1e0f1">Senhora</td> <td align="right">175€</td> <td width="13" align="center">x</td> <td align="center"><input name="senhora_pessoas" type="text" id="senhora_pessoas" onchange="javascript:soma_parcial('senhora_pessoas','175','valor_senhora');" value="0" size="3" /></td> <td align="center">=</td> <td align="right"><input name="valor_senhora" type="text" id="valor_senhora" size="7" readonly="readonly" /></td> <td>€</td> <td> </td> </tr> <tr bgcolor="#ebeafc"> <td>Júnior*</td> <td align="right">45€</td> <td width="13" align="center">x</td> <td align="center"><input name="junior_pessoas" type="text" id="junior_pessoas" onchange="javascript:soma_parcial('junior_pessoas','45','valor_junior');" value="0" size="3" /></td> <td align="center">=</td> <td align="right"><input name="valor_junior" type="text" id="valor_junior" size="7" readonly="readonly" /></td> <td>€</td> <td> </td> </tr> <tr> <td colspan="8" valign="top" bgcolor="#e1e0f1"><h6>* valor a completar em caso de prémio | Estão excluídas as provas extras</h6></td> </tr> <tr> <td colspan="8" bgcolor="#d4d2fa"><h2> </h2></td> </tr> <tr bgcolor="#e1e0f1"> <td bgcolor="#e1e0f1">HOTEL SOLVERDE *****<br /></td> <td align="right"> </td> <td width="13" align="center"> </td> <td align="center"> </td> <td align="center"> </td> <td align="right"> </td> <td> </td> <td> </td> </tr> <tr> <td bgcolor="#ebeafc">em regime APA</td> <td align="right" bgcolor="#ebeafc">726€</td> <td width="13" align="center" bgcolor="#ebeafc">x</td> <td align="center" bgcolor="#ebeafc"><input name="hsol_apa_pessoas" type="text" id="hsol_apa_pessoas" onchange="javascript:soma_parcial('hsol_apa_pessoas','726','valor_h_apa');" value="0" size="3" /></td> <td align="center" bgcolor="#ebeafc"> </td> <td align="right" bgcolor="#ebeafc"><input name="valor_h_apa" type="text" id="valor_h_apa" size="7" readonly="readonly" /></td> <td bgcolor="#ebeafc">€</td> <td bgcolor="#ebeafc"> </td> </tr> <tr> <td bgcolor="#ebeafc">sumplemento quarto individual</td> <td align="right" bgcolor="#ebeafc">335€</td> <td width="13" align="center" bgcolor="#ebeafc">x</td> <td align="center" bgcolor="#ebeafc"><input name="hsol_suplm_pessoas" type="text" id="hsol_suplm_pessoas" onchange="javascript:soma_parcial('hsol_suplm_pessoas','335','valor_h_suplm');" value="0" size="3" /></td> <td align="center" bgcolor="#ebeafc"> </td> <td align="right" bgcolor="#ebeafc"><input name="valor_h_suplm" type="text" id="valor_h_suplm" size="7" readonly="readonly" /></td> <td bgcolor="#ebeafc">€</td> <td bgcolor="#ebeafc"> </td> </tr> <tr> <td bgcolor="#e1e0f1">HOTEL APARTAMENTO SOLVERDE ***</td> <td align="right" bgcolor="#e1e0f1"> </td> <td width="13" align="center" bgcolor="#e1e0f1"> </td> <td align="center" bgcolor="#e1e0f1"> </td> <td align="center" bgcolor="#e1e0f1"> </td> <td align="right" bgcolor="#e1e0f1"> </td> <td bgcolor="#e1e0f1"> </td> <td bgcolor="#e1e0f1"> </td> </tr> <tr> <td bgcolor="#ebeafc">em regime APA</td> <td align="right" bgcolor="#ebeafc">478€</td> <td width="13" align="center" bgcolor="#ebeafc">x</td> <td align="center" bgcolor="#ebeafc"><input name="apart_apa_pessoas" type="text" id="apart_apa_pessoas" onchange="javascript:soma_parcial('apart_apa_pessoas','478','valor_ap_apa');" value="0" size="3" /></td> <td align="center" bgcolor="#ebeafc"> </td> <td align="right" bgcolor="#ebeafc"><input name="valor_ap_apa" type="text" id="valor_ap_apa" size="7" readonly="readonly" /></td> <td bgcolor="#ebeafc">€</td> <td bgcolor="#ebeafc"> </td> </tr> <tr> <td bgcolor="#ebeafc">suplemento quarto individual</td> <td align="right" bgcolor="#ebeafc">198€</td> <td width="13" align="center" bgcolor="#ebeafc">x</td> <td align="center" bgcolor="#ebeafc"><input name="apart_suplm_pessoas" type="text" id="apart_suplm_pessoas" onchange="javascript:soma_parcial('apart_suplm_pessoas','198','valor_ap_suplm');" value="0" size="3" /></td> <td align="center" bgcolor="#ebeafc"> </td> <td align="right" bgcolor="#ebeafc"><input name="valor_ap_suplm" type="text" id="valor_ap_suplm" size="7" readonly="readonly" /></td> <td bgcolor="#ebeafc">€</td> <td bgcolor="#ebeafc"> </td> </tr> <tr> <td colspan="8" bgcolor="#d4d2fa"><h2>Jantar de Gala</h2></td> </tr> <tr> <td bgcolor="#ebeafc">(veterano / super veterano / senhora / sénior 21-25 / júnior / acompanhante ou sénior não inscrito no abono do Campeonato do Mundo)</td> <td align="right" bgcolor="#ebeafc">50€</td> <td width="13" align="center" bgcolor="#ebeafc">x</td> <td align="center" bgcolor="#ebeafc"><input name="jantar_pessoas" type="text" id="jantar_pessoas" onchange="javascript:soma_parcial('jantar_pessoas','50','valor_jantar');" value="0" size="3" /></td> <td align="center" bgcolor="#ebeafc"> </td> <td align="right" bgcolor="#ebeafc"><input name="valor_jantar" type="text" id="valor_jantar" size="7" readonly="readonly" /></td> <td bgcolor="#ebeafc">€</td> <td bgcolor="#ebeafc"> </td> </tr> <tr bgcolor="#e1e0f1"> <td> </td> <td align="right"> </td> <td align="center"> </td> <td> </td> <td align="center"> </td> <td align="right"> </td> <td> </td> <td> </td> </tr> <tr bgcolor="#ebeafc"> <td colspan="4" align="right"><strong>Total Final:</strong></td> <td align="center"> </td> <td align="right"><label> <input name="valor_total" type="text" id="valor_total" size="7" readonly="readonly" /> </label></td> <td>€</td> <td> </td> </tr> </table> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td colspan="3" bgcolor="#d4d2fa"><h2>FORMULÁRIO DE INSCRIÇÃO</h2></td> </tr> <tr> <td colspan="3" bgcolor="#e1e0f1"><p> </p></td> </tr> <tr bgcolor="#ebeafc"> <td colspan="3"><h4>Complete os seus dados</h4></td> </tr> <tr bgcolor="#e1e0f1"> <td width="20%">Nome Completo</td> <td width="35%"><label> <input name="nome" type="text" id="nome" size="60" /> </label></td> <td width="45%"> </td> </tr> <tr bgcolor="#ebeafc"> <td valign="top">Morada</td> <td><label> <textarea name="morada" id="morada" cols="45" rows="5"></textarea> </label></td> <td> </td> </tr> <tr bgcolor="#e1e0f1"> <td bgcolor="#e1e0f1">Contacto</td> <td><label> <input name="contacto" type="text" id="contacto" size="15" /> </label></td> <td> </td> </tr> <tr bgcolor="#ebeafc"> <td>E-mail</td> <td><label> <input name="email" type="text" id="email" size="30" /> </label></td> <td> </td> </tr> <tr bgcolor="#e1e0f1"> <td colspan="3"><h4>Outros participantes no mesmo alojamento</h4></td> </tr> <tr bgcolor="#ebeafc"> <td valign="top">Nomes Completos (em cada linha)</td> <td><label> <textarea name="nomes_outros" id="nomes_outros" cols="45" rows="5"></textarea> </label></td> <td> </td> </tr> <tr> <td colspan="3"><div id='myform_errorloc' class='error_strings'></div> <label> <input type="submit" name="submeter" id="submeter" value="Enviar Inscrição" style="background-color:#36F; color:#FFF; width: 200px; height: 50px; font-weight:bold;" /> </label></td> </tr> </table> </form> </body> </html> MD Link to comment Share on other sites More sharing options...
djthyrax Posted March 14, 2009 at 10:12 PM Report Share #250752 Posted March 14, 2009 at 10:12 PM Não estou a ver nada mal, talvez seja apenas uma mariquice qualquer do motor de JavaScript com data types. Experimenta assim: function soma_parcial(pessoas,custo,campo) { resultado = parseInt(document.getElementById(pessoas).value) * parseInt(custo); document.getElementById(campo).value = (string)resultado; soma_total(); } function soma_total() { resultado = parseInt(document.getElementById("valor_senior").value) + parseInt(document.getElementById("valor_senior2125").value) + parseInt(document.getElementById("valor_veterano").value) + parseInt(document.getElementById("valor_superveterano").value) + parseInt(document.getElementById("valor_senhora").value) + parseInt(document.getElementById("valor_junior").value) + parseInt(document.getElementById("valor_h_apa").value) + parseInt(document.getElementById("valor_h_suplm").value) + parseInt(document.getElementById("valor_ap_apa").value) + parseInt(document.getElementById("valor_ap_suplm").value); document.getElementById("valor_total").value = (string)resultado; } Se não der, vai fazendo alert()s com o resultado do typeof() e valor das variáveis até encontrares o culpado. Btw, tens um </head> a mais. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
powerPT Posted March 15, 2009 at 12:39 AM Author Report Share #250778 Posted March 15, 2009 at 12:39 AM Pois nem eu vejo nada de mal e estou-me a passar com isto Fazer isso da conversão para string já eu tinha feito mas usando o .toString() e sem resultado positivo. MD Link to comment Share on other sites More sharing options...
softklin Posted March 15, 2009 at 10:11 AM Report Share #250791 Posted March 15, 2009 at 10:11 AM Se não me engano, o .value não está definido. Tens de usar o .innerHTML. Um exemplo em: http://www.w3schools.com/HTMLDOM/met_doc_getelementbyid.asp Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
skin Posted March 15, 2009 at 11:48 AM Report Share #250795 Posted March 15, 2009 at 11:48 AM O .value é o que ele quer porque está a utilizar inputs, o innerHTML era se estivesse a trabalhar com (p.e.) div's, td's, etc. Our lives begin to end the day we become silent about things that matter - Martin Luther King Link to comment Share on other sites More sharing options...
djthyrax Posted March 15, 2009 at 03:08 PM Report Share #250826 Posted March 15, 2009 at 03:08 PM Já vi qual é o erro. Quando o .value é "", o parseInt() retorna NaN, daí estar a dar buraco. Basta usares algo como isto em vez de parseInt que já deve funcionar: function Integer(x){ if(x == "") return 0; else return parseInt(x); } Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
powerPT Posted March 15, 2009 at 08:29 PM Author Report Share #250897 Posted March 15, 2009 at 08:29 PM É isso mesmo! Já está resolvido, muito muito obrigado! Já estava a desistir da soma total, ai estava... MD Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now