acborba Postado Junho 15, 2009 Denunciar Share Postado Junho 15, 2009 (editado) Galera estou tentando validar um formulário (questionário) dinamico mas não estou conseguindo. segue o scritp:</style> <script type="text/JavaScript"> <!-- function checkRadio(){ var inputs = document.getElementsByTagName( 'input' ); for(var x=0; x < inputs.length; x++){ if ( inputs[x].type == "radio" ){ if(inputs[x].checked==true){ alert("Enviando respostas") document.frm.submit() }//if else{ alert("Todos as opções devem ser selecionadas!") windown.location= "questionario1.php" }//else }//if }//for } //function <div id=geral> <? $grupo = mysql_query("SELECT DISTINCT g.grupo,g.idgrupo,p.grupo_idGrupo FROM grupo as g INNER JOIN pergunta as p WHERE g.questionario_idquestionario='$idquest' AND g.idGrupo=p.grupo_idGrupo" ); $qtd_grupo = mysql_num_rows($grupo); for ($x=1; $x<=$qtd_grupo; $x++) { $reg_grupo=mysql_fetch_assoc($grupo); $idgrupo = $reg_grupo[idgrupo]; ?> <table width="100%" border="0" align="center"> <td><span class="style3">Grupo: <? echo $reg_grupo[grupo];?> </span></td> </tr> </table> <p> </p> <? $perg = mysql_query("SELECT pergunta,idPergunta FROM pergunta WHERE grupo_idGrupo='$idgrupo'"); $qtd_perg = mysql_num_rows($perg); for ($i=1; $i<=$qtd_perg; $i++) { $reg_perg=mysql_fetch_assoc($perg); ?> <table width="100%" border="0"> <tr> <td><? echo $i.' - '; echo $reg_perg[pergunta]; ?> </td> </tr> </table> <table width="200"> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=5 /> Muito Safisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=4 /> Satisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=3 /> Pouco Satisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=2 /> Insatisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=1 /> Muito Insatisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=0 /> Não Se Aplica</label></td> </tr> </table> <p> </p> <? } } ?> <input type="hidden" name="idquest" value="<? echo $idquest;?>" /> <input type="hidden" name="matricula" value="<? echo $matricula;?>" /> <table width="100%" border="0"> <tr> <td>Elogios/Sugestões/Reclamações:</td> </tr> <tr> <td><textarea name="comentario" cols="69" rows="6"></textarea></td> </tr> </table> <table width="200" border="0" class="teste"> <tr> <td><input type="submit" name="Submit" value="Fechar" onclick="self.close()"/></td> <td><input type="submit" value="Enviar" </td> </tr> </table> <p> </p> </div> Editado Junho 17, 2009 por acborba Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romerito Postado Junho 15, 2009 Denunciar Share Postado Junho 15, 2009 (editado) i aew acborba, bom o erro ta na sua condição, segue a linha:if ( inputs[x].type == "radio" ){você está perguntado se todos as suas tags inputs são do tipo radio, e como não são vai sempre entrar na condição else,pois você tem 2 campos hidden e 2 submit.espero que ajude abraço! Editado Junho 15, 2009 por Romerito Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 acborba Postado Junho 15, 2009 Autor Denunciar Share Postado Junho 15, 2009 i aew acborba, bom o erro ta na sua condição, segue a linha:if ( inputs[x].type == "radio" ){você está perguntado se todos as suas tags inputs são do tipo radio, e como não são vai sempre entrar na condição else,pois você tem 2 campos hidden e 2 submit.espero que ajude abraço!E de que forma eu poderia contornar esta situação? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Junho 15, 2009 Denunciar Share Postado Junho 15, 2009 Como o Romerito disse, o código busca apenas pelo primeiro input (que é do tipo submit) para fazer a verificaçãoTente assim:var inputs = document.getElementsByTagName( 'input' ); var valor=false for(var x=0; x < inputs.length; x++){ if (inputs[x].type == "radio" ){ if(inputs[x].checked==true){ valor=true break } } } if (valor){ alert("Enviando respostas") document.frm.submit() }else{ alert("Todos as opções devem ser selecionadas!") location= "questionario1.php" } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 acborba Postado Junho 16, 2009 Autor Denunciar Share Postado Junho 16, 2009 Como o Romerito disse, o código busca apenas pelo primeiro input (que é do tipo submit) para fazer a verificaçãoTente assim:var inputs = document.getElementsByTagName( 'input' ); var valor=false for(var x=0; x < inputs.length; x++){ if (inputs[x].type == "radio" ){ if(inputs[x].checked==true){ valor=true break } } } if (valor){ alert("Enviando respostas") document.frm.submit() }else{ alert("Todos as opções devem ser selecionadas!") location= "questionario1.php" } Cara funcionou em partes. Quando eu tento dar o submit do form vazio ele funciona beleza mas quando eu seleciono uma das opções ele envia. Mas tem que todas as opções estarem selecionadas. Tentei varrear um array desta forma mas não esta nem chamando o script: var inputs = document.getElementsByTagName( 'input' ); var valor = new array(); for(var x=0; x < inputs.length; x++){ if (inputs[x].type == "radio" ){ if(inputs[x].checked==true){ valor[x] = 1; break }else{ valor[x] = 0; } } } teste=1; for(a=0;a<valor.length; a++){ if(valor[a] == 0){ teste = 0; } } if (teste==1){ alert("Enviando respostas") document.frm.submit() }else{ alert("Todos as opções devem ser selecionadas!") // window.location= "questionario1.php" } }alguém sabe o que tem de errado? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romerito Postado Junho 16, 2009 Denunciar Share Postado Junho 16, 2009 acborba, posta seu form pra gente poder ver como ele está! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 acborba Postado Junho 16, 2009 Autor Denunciar Share Postado Junho 16, 2009 acborba, posta seu form pra gente poder ver como ele está!Na verdade não é um form :rolleyes: <div id=geral> <? $grupo = mysql_query("SELECT DISTINCT g.grupo,g.idgrupo,p.grupo_idGrupo FROM grupo as g INNER JOIN pergunta as p WHERE g.questionario_idquestionario='$idquest' AND g.idGrupo=p.grupo_idGrupo" ); $qtd_grupo = mysql_num_rows($grupo); for ($x=1; $x<=$qtd_grupo; $x++) { $reg_grupo=mysql_fetch_assoc($grupo); $idgrupo = $reg_grupo[idgrupo]; ?> <table width="100%" border="0" align="center"> <td><span class="style3">Grupo: <? echo $reg_grupo[grupo];?> </span></td> </tr> </table> <p> </p> <? $perg = mysql_query("SELECT pergunta,idPergunta FROM pergunta WHERE grupo_idGrupo='$idgrupo'"); $qtd_perg = mysql_num_rows($perg); for ($i=1; $i<=$qtd_perg; $i++) { $reg_perg=mysql_fetch_assoc($perg); ?> <table width="100%" border="0"> <tr> <td><? echo $i.' - '; echo $reg_perg[pergunta]; ?> </td> </tr> </table> <table width="200"> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=5 /> Muito Safisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=4 /> Satisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=3 /> Pouco Satisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=2 /> Insatisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=1 /> Muito Insatisfeito</label></td> </tr> <tr> <td><label> <input type="radio" name="opcao[<?=$reg_grupo[idgrupo]?>][<?=$reg_perg[idPergunta]?>]" value=0 /> Não Se Aplica</label></td> </tr> </table> <p> </p> <? } } ?> <input type="hidden" name="idquest" value="<? echo $idquest;?>" /> <input type="hidden" name="matricula" value="<? echo $matricula;?>" /> <table width="100%" border="0"> <tr> <td>Elogios/Sugestões/Reclamações:</td> </tr> <tr> <td><textarea name="comentario" cols="69" rows="6"></textarea></td> </tr> </table> <table width="200" border="0" class="teste"> <tr> <td><input type="submit" name="Submit" value="Fechar" onclick="self.close()"/></td> <td><input type="submit" value="Enviar" </td> </tr> </table> <p> </p> </div> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romerito Postado Junho 16, 2009 Denunciar Share Postado Junho 16, 2009 (editado) bom, tenta isso aqui acborba:var inps = document.getElementsByTagName( 'input' ); var totRdo = 0; var rdo = new Array(); for ( var i = 0; i < inps.length; i++ ) { if ( inps[i].type == 'radio' ) rdo[totRdo++] = inps[i]; } var j = 0; for ( i = 0; i < ( rdo.length / 6 ); i++ ) { var s = false; var cond = ( j ) ? ( j + 6 ) : 6; for (; j < cond; j++ ) { if ( rdo[j].checked == true ) s = true; } if( !s ) { alert( "Todos as opções devem ser selecionadas!" ); window.location= "questionario1.php"; return false; } } alert( "Enviando respostas" ); document.frm.submit();espero que ajude! Editado Junho 16, 2009 por Romerito Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 acborba Postado Junho 16, 2009 Autor Denunciar Share Postado Junho 16, 2009 Cara ta quase :D só q ainda tem um problema :huh: nesta parte:if( !s ) { alert( "Todos as opções devem ser selecionadas!" ); window.location= "questionario1.php"; return false; }Se eu deixo como está ele não deixa eu dar o submit sem ter selecionado ao menos uma opção e recarrega a página, beleza. O problema é que como é dinamico eu perco todas as informações da página ficando apenas o combo sugestões (que não é estático).Se eu removo a linha window.location= "questionario1.php"; ele não deixa eu dar o submit, beleza. Mas se tiver alguma opção selecionada ele entra no if da a mesagem e para. Mas não sei porque ele ainda envia os campos para outra pagina inserindo no banco.Não sei se tu entendeu. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romerito Postado Junho 16, 2009 Denunciar Share Postado Junho 16, 2009 não entende sahushu, o padrão é se está certo envia, senão não envia, se tu comentar a linha de location ele não envia, não está certo?não entende o que você quer que ele faça caso não esteje preenchido certo!estou meio burraldo hoje shaushashu! :wacko: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 acborba Postado Junho 16, 2009 Autor Denunciar Share Postado Junho 16, 2009 não entende sahushu, o padrão é se está certo envia, senão não envia, se tu comentar a linha de location ele não envia, não está certo?não entende o que você quer que ele faça caso não esteje preenchido certo!estou meio burraldo hoje shaushashu! :wacko:hahahaÉ assim:Do jeito que está quando deixo algo em branco ele da a mensagem "Todos as opções devem ser selecionadas!" e redireciona a pagina para ela mesma mas todos os campos somem (porque os campos veem do banco).Comentando a linha do redirecionamento ele insere no banco (caso algum campo tenha sido selecionado) mas não vai para a outra pagina, apenas da a mensagem "Todos as opções devem ser selecionadas!".Ele ter que dar a mensagem caso algum campo esteja em branco e ao clicar no botão do alert, ou recarregar todo o formulário (acho o meio mais dificil) ou não fazer nada após o botão.Só trocar de pagina se todos os campos forem preenchidos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romerito Postado Junho 17, 2009 Denunciar Share Postado Junho 17, 2009 bom se pelo que entende você precisa fazer nada ou recaregar a mesma caso os campos não estejam preenchidos corretamente:bom para recarregar a pagina subistitua a linha:window.location= "questionario1.php"; por está: document.location.reload();para fazer nada, apenas comente a linha citada acima e de um return; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 acborba Postado Junho 17, 2009 Autor Denunciar Share Postado Junho 17, 2009 bom se pelo que entende você precisa fazer nada ou recaregar a mesma caso os campos não estejam preenchidos corretamente:bom para recarregar a pagina subistitua a linha:window.location= "questionario1.php"; por está: document.location.reload();para fazer nada, apenas comente a linha citada acima e de um return;Graaaande Romerito!!!Resolvido era isso mesmo.Muito Obrigado :lol: Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
acborba
Galera estou tentando validar um formulário (questionário) dinamico mas não estou conseguindo. segue o scritp:
Editado por acborbaLink para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.