Ir para conteúdo
Fórum Script Brasil
  • 0

Validar radiobutton num dá certo


Netanias

Pergunta

Olá. gostaria de saber como resolver esse problema...

Tenho três grupos de Radiobutton e preciso validar eles... É uma loja virtual...

o código tá mais ou menos assim...

<form name="form1" method="post" action="">
    <input type="radio" name="grupo1" value="1">Op&ccedil;&atilde;o 1<br>
    <input type="radio" name="grupo1" value="2">Op&ccedil;&atilde;o 2<br>
    <input type="radio" name="grupo1" value="3">Op&ccedil;&atilde;o 3</p>
  <p> 
    <input type="radio" name="grupo2" value="1">Op&ccedil;&atilde;o 1<br>
    <input type="radio" name="grupo2" value="2">Op&ccedil;&atilde;o 2<br>
    <input type="radio" name="grupo2" value="3">Op&ccedil;&atilde;o 3</p>
  <p> 
    <input type="radio" name="grupo3" value="1">Op&ccedil;&atilde;o 1<br>
    <input type="radio" name="grupo3" value="2">Op&ccedil;&atilde;o 2<br>
    <input type="radio" name="grupo3" value="3">Op&ccedil;&atilde;o 3</p>
</form>

como fazer para enviar o form somente depois de selecionar uma opção em cada grupo?

Vlw!

Editado por fercosmig
Utilize as tags de código, facilitam a visualização.
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

É uma loja virtual... Seu eu deixar as três opções já pré-selecionadas, algúm vacilão... vai comprar um produto... sem perceber qual opção ele escolheu... aí depois dá o maior problema... entendeu? por isso preciso que ele fique sem ser selecionado... pro cara ter que escolher... que aí ele escolhe correto...

Link para o comentário
Compartilhar em outros sites

  • 0

tudo bem que fercosmig já deu uma resposta, mas pra todo caso:

taí um script simples:

funfando de boa no firefox 2.0, IE 6 e opera 9.

<script type="text/javascript">
function checkForm(){
var a1a = document.getElementById("1");
var a2a=document.getElementById("2");
var a3a=document.getElementById("3");
if(a1a.checked || a2a.checked || a3a.checked){
checkForm2();
}else{
alert('Tem algum campo não checado');
}
}
function checkForm2(){
var a4a=document.getElementById("4");
var a5a=document.getElementById("5");
var a6a=document.getElementById("6");
if(a4a.checked || a5a.checked || a6a.checked){
checkForm3();
}else{
alert('Tem algum campo não checado');
}
}
function checkForm3(){
var a7a=document.getElementById("7");
var a8a=document.getElementById("8");
var a9a=document.getElementById("9");
if(a7a.checked || a8a.checked || a9a.checked){

//ação que acontece se pelo menos um radio em cada parágrafo estiver checado (ação em caso positivo)

document.forms[0].submit();

}else{
alert('Tem algum campo não checado');
}
}

</script>

<form name="form1" method="post" action="">
<input id="1" type="radio" name="grupo1" value="1">Op&ccedil;&atilde;o 1<br>
<input id="2" type="radio" name="grupo1" value="2">Op&ccedil;&atilde;o 2<br>
<input id="3" type="radio" name="grupo1" value="3">Op&ccedil;&atilde;o 3</p>
<p>
<input id="4" type="radio" name="grupo2" value="1">Op&ccedil;&atilde;o 1<br>
<input id="5" type="radio" name="grupo2" value="2">Op&ccedil;&atilde;o 2<br>
<input id="6" type="radio" name="grupo2" value="3">Op&ccedil;&atilde;o 3</p>
<p>
<input id="7" type="radio" name="grupo3" value="1">Op&ccedil;&atilde;o 1<br>
<input id="8" type="radio" name="grupo3" value="2">Op&ccedil;&atilde;o 2<br>
<input id="9" type="radio" name="grupo3" value="3">Op&ccedil;&atilde;o 3</p>
<br>
<input type="button" value="Enviar" OnClick="checkForm()">
</form>

Link para o comentário
Compartilhar em outros sites

  • 0

Alexandre... Mas tanto os grupos quantos as opções podem variar de quantidade...

Por exemplo, o grupo 1 em um produto pode ter 2 opções.. enquanto no outro produto pode ter 5 opções...

no grupo dois também vai variar dependendo do produto da loja...

e assim diante....

entendeu?

vlw... e desculpa a burridade...

Link para o comentário
Compartilhar em outros sites

  • 0

cara... nada ainda.... já testei também....

<script language="JavaScript">
function ValidaOpcoesVoltagem(form)
{
    if (document.FormCompraProduto.IDVol.checked == true)
    {
    ValidaOpcoesTamanho(form);
    return true;
    }
    else
    {
    alert('Necessário informar a Voltagem!');
    return false;
    }
}
function ValidaOpcoesTamanho(form)
{
    if (document.FormCompraProduto.IDVol.checked == true || document.FormCompraProduto.IDTam.checked == true)
    {
    ValidaOpcoesCor(form);
    return true;
    }
    else
    {
    alert('Necessário informar o Tamanho!');
    return false;
    }
}
function ValidaOpcoesCor(form)
{
    if (document.FormCompraProduto.IDVol.checked == true || document.FormCompraProduto.IDTam.checked == true || document.FormCompraProduto.IDCor.checked == true)
    {
    document.FormCompraProduto.submit(form);
    return true;
    }
}
aí no form coloquei assim....
<form action="../sacola/adiciona_produto.asp" method="get" name="FormCompraProduto" onClick="return ValidaOpcoesVoltagem(this);">

........ ( os grupos de radio são.. IDVol, IDTam e IDCor... mas as opções de cada um desses grupos pode mudar... )

</form>

O erro é esse...

Se o cara enviar o form sem selecionar IDVol.. dá o alerta certinho...

Se eu marcar o IDVol e tentar enviar, não era pra ir... era pra dar o alert.. mas dá é erro...

entendeu?

Editado por fercosmig
Utilize as tags de código, facilitam a visualização.
Link para o comentário
Compartilhar em outros sites

  • 0

posso mandar o arqruivo pra tu dá uma verificada?

<script language="JavaScript">
function ValidaOpcoesVoltagem(form)
{
    if (document.FormCompraProduto.IDVol.checked == true)
    {
    ValidaOpcoesTamanho(form);
    }
    else
    {
    alert('Necessário informar a Voltagem!');
    return false;
    }
}
function ValidaOpcoesTamanho(form)
{
    if (document.FormCompraProduto.IDVol.checked == true || document.FormCompraProduto.IDTam.checked == true)
    {
    ValidaOpcoesCor(form);
    }
    else
    {
    alert('Necessário informar o Tamanho!');
    return false;
    }
}
function ValidaOpcoesCor(form)
{
    if (document.FormCompraProduto.IDVol.checked == true || document.FormCompraProduto.IDTam.checked == true || document.FormCompraProduto.IDCor.checked == true)
    {
    document.FormCompraProduto.submit(form);
    }
}
</script>
<form action="../sacola/adiciona_produto.asp" method="get" name="FormCompraProduto" onClick="return ValidaOpcoesVoltagem(this);">
                    <table width="340" border="0" cellspacing="0" cellpadding="0">
                    <!--DWLayoutTable-->
                    <tr> 
                      <td width="340" height="28" valign="top" class="pagina-nome-produto"><%=(Prod.Fields.Item("Produto").Value)%>
<input name="IDProduto" type="hidden" value="<%=Prod("Id")%>">
</td>
                    </tr>
                  </table>
                  <table width="340" border="0" cellspacing="0" cellpadding="0">
                    <!--DWLayoutTable-->
                    <% If Int(Prod("Promocao")) > 0 Then %>
                    <tr> 
                      <td width="39" height="20" valign="bottom">De</td>
                      <td width="301" valign="bottom" class="valor-de"><%= FormatCurrency((Prod.Fields.Item("Valor").Value), -1, -2, -2, -2) %></td>
                    </tr>
                    <tr> 
                      <td height="30" valign="middle">Por</td>
                      <td valign="top" class="pagina-valor-produto"><%= FormatCurrency((Prod.Fields.Item("Promocao").Value), -1, -2, -2, -2) %></td>
                    </tr>
                    <% Else %>
                    <tr> 
                      <td height="30" valign="middle">Por</td>
                      <td valign="top" class="pagina-valor-produto"><%= FormatCurrency((Prod.Fields.Item("Valor").Value), -1, -2, -2, -2) %></td>
                    </tr>
                    <% End If %>
                    <tr> 
                      <td height="15"></td>
                      <td></td>
                    </tr>
                  </table>
                  <table width="340" border="0" cellspacing="0" cellpadding="0">
                    <!--DWLayoutTable-->
                    <tr> 
                      <td width="90" valign="top">
<% If Prod("IdVoltagem") <> "" Then %>
<table width="90" border="0" cellspacing="0" cellpadding="0">
                          <!--DWLayoutTable-->
                          <tr> 
                            <td width="96" height="14" valign="top" class="secao-titulo-cor-tamanho">Voltagem</td>
                          </tr>
                          <tr> 
                            <td height="5"></td>
                          </tr>
                          <tr> 
                            <td height="25" valign="top"> <%
OpVol = Prod("IdVoltagem")
MostraVol = Split(OpVol, ", ")

For I = LBound(MostraVol) to UBound(MostraVol)
%> 
                              <table width="100%" border="0" cellpadding="0" cellspacing="0">
                                <!--DWLayoutTable-->
                                <tr> 
                                  <td width="20" height="25" valign="middle"> 
                                    <input type="radio" name="IDVol" value="<%=MostraVol(I)%>"></td>
                                  <td width="76" valign="middle"><%=Response.Write("&nbsp;&nbsp;")%><%=MostraVol(I)%></td>
                                </tr>
                              </table>
<%
next
%> </td>
                          </tr>
                        </table>
<br>
<% Else %>
<input name="IDVol" type="hidden" id="IDVol" value="0" checked>
<% End If %>
                      <% If Prod("IDTamanho") <> "" Then %> <table width="90" border="0" cellspacing="0" cellpadding="0">
                          <!--DWLayoutTable-->
                          <tr> 
                            <td width="96" height="14" valign="top" class="secao-titulo-cor-tamanho">Tamanho</td>
                          </tr>
                          <tr> 
                            <td height="5"></td>
                          </tr>
                          <tr> 
                            <td height="25" valign="top"> <%
OpTam = Prod("IdTamanho")
MostraTam = Split(OpTam, ", ")

For I = LBound(MostraTam) to UBound(MostraTam)
%> <%
Dim Tam
Dim Tam_numRows

Set Tam = Server.CreateObject("ADODB.Recordset")
Tam.ActiveConnection = MM_compraextra_STRING
Tam.Source = "SELECT * FROM tblLojaProdutoTamanho WHERE Id = " & MostraTam(I)
Tam.CursorType = 0
Tam.CursorLocation = 2
Tam.LockType = 1
Tam.Open()

Tam_numRows = 0
%> 
                              <table width="100%" border="0" cellpadding="0" cellspacing="0">
                                <!--DWLayoutTable-->
                                <tr> 
                                  <td width="20" height="25" valign="middle"> 
                                    <input type="radio" name="IDTam" value="<%=(Tam.Fields.Item("Id").Value)%>"></td>
                                  <td width="76" valign="middle"><%=Response.Write("&nbsp;&nbsp;")%><%=(Tam.Fields.Item("Tam").Value)%></td>
                                </tr>
                              </table>
                              <%
Tam.Close()
Set Tam = Nothing
%> <%
next
%> </td>
                          </tr>
                        </table>
<% Else %>
<input name="IDTam" type="hidden" id="IDTam" value="0" checked>
                        <% End If %> </td>
                      <td width="10">&nbsp;</td>
                      <td width="240" valign="top"> <% If Prod("IDCor") <> "" Then %> <table width="240" border="0" cellspacing="0" cellpadding="0">
                          <!--DWLayoutTable-->
                          <tr> 
                            <td width="240" height="20" valign="top" class="secao-titulo-cor-tamanho">Cores 
                              dispon&iacute;veis</td>
                          </tr>
                          <tr> 
                            <td height="5"></td>
                          </tr>
                          <tr> 
                            <td height="25" valign="top"> <%
OpCor = Prod("IdCor")
MostraCor = Split(OpCor, ", ")

For I = LBound(MostraCor) to UBound(MostraCor)
%> <%
Dim Cor
Dim Cor_numRows

Set Cor = Server.CreateObject("ADODB.Recordset")
Cor.ActiveConnection = MM_compraextra_STRING
Cor.Source = "SELECT * FROM tblLojaProdutoCor WHERE Id = " & MostraCor(I)
Cor.CursorType = 0
Cor.CursorLocation = 2
Cor.LockType = 1
Cor.Open()

Cor_numRows = 0
%> 
                              <table width="100%" border="0" cellpadding="0" cellspacing="0">
                                <!--DWLayoutTable-->
                                <tr> 
                                  <td width="20" height="25" valign="middle"> 
                                    <input type="radio" name="IDCor" value="<%=(Cor.Fields.Item("Id").Value)%>"></td>
                                  <td width="30" align="center" valign="middle"><img src="../imagens_cores/<%=(Cor.Fields.Item("Mostra").Value)%>" alt="" width="20" height="15" border="0"></td>
                                  <td width="190" valign="middle"><%=(Cor.Fields.Item("Cor").Value)%></td>
                                </tr>
                              </table>
                              <%
Cor.Close()
Set Cor = Nothing
%> <%
next
%> </td>
                          </tr>
                        </table>
<% Else %>
<input name="IDCor" type="hidden" id="IDCor" value="0" checked>
                        <% End If %> </td>
                    </tr>
                    <tr> 
                      <td colspan="3" height="15"></td>
                    </tr>
                  </table>
                  <table width="340" border="0" cellpadding="0" cellspacing="0" class="table-espacador-topo-10-com-borda">
                    <!--DWLayoutTable-->
                    <tr> 
                      <td width="190" height="40" align="right" valign="middle">Adicione este produto &agrave; sua<br>Sacola de Compras</td>
                      <td width="10">&nbsp;</td>
                        <td width="140" valign="top">
<input type="image" class="link-preto" src="../_img/loja_botao_comprar.gif" alt="Comprar" width="140" height="40" border="0">
<input name="Valor" type="hidden" id="Valor" value="<% If Int(Prod("Promocao")) > 0 Then %><%=FormatCurrency(Prod("Promocao"), -1, -2, -2, -2) %><% Else %><%=FormatCurrency(Prod("Valor"), -1, -2, -2, -2) %><% End If %>">
<input name="Peso" type="hidden" id="Frete" value="<% If Prod("FreteGratis") = 1 Then %>0<% Else %><%=Prod("Peso") %><% End If %>">
                        </td>
                    </tr>
                  </table>
                  <br> <br> <center>
                    <table width="140" border="0" cellpadding="0" cellspacing="0">
                      <!--DWLayoutTable-->
                      <tr> 
                          <td width="140" valign="top"><a href="../interatividade/lista_presente.asp" class="link-pagina-lista-produto">Lista 
                            de Presente</a></td>
                      </tr>
                      <tr> 
                        <td height="5"></td>
                      </tr>
                      <tr> 
                          <td valign="top"><a href="../interatividade/lista_casamento.asp" class="link-pagina-lista-produto">Lista 
                            de Casamento</a></td>
                      </tr>
                      <tr> 
                        <td height="5"></td>
                      </tr>
                      <tr> 
                          <td valign="top"><a href="../interatividade/lista_desejos.asp" class="link-pagina-lista-produto">Lista 
                            de Desejos</a></td>
                      </tr>
                    </table>
                  </center>
</form>

Editado por fercosmig
Utilize as tags de código, facilitam a visualização.
Link para o comentário
Compartilhar em outros sites

  • 0

Cara você só vai precisar de adaptar um número (no script) em cada página: o número de grupos de rádio button (leia atentamente o script) e página.

Não exclua nem modifique o objeto hidden que eu coloquei na pagina. (ele é essencial para a execução do script).

não use para enviar o form um submit, use um button com as funções indicadas. Para cada grupo de radio voce vai precisar chamar a função checkRa('nomedogrupo') com o nome do grupo. Por final (ainda no botão) chame a checkGeral() e pronto. vai ficar simples.

EDIT:

Se quiser montar um a função que chama todas, também dá:

function executa(){
checkRa('grupo1');
checkRa('grupo2');
checkRa('grupo3');
checkGeral();
}
//ai é só chamar no button a função executa()
//Codigo abaixo//
<script type="text/Javascript">

//script feito para o Netanias.

function checkRa(grupo){
obj=document.getElementById('hide');
radios=document.getElementsByName(grupo);
sim=0;
não=0;
for(i=0;i<radios.length;i++){
if(radios[i].checked){
sim=sim-1+2;
}else{
não=não-1+2;
}
}
if(sim != '0'){
obj.value=obj.value -1+2;
}else{
alert('existem campos não checados');
obj.value='0';
document.forms[0].reset();
}
}

function checkGeral(){
esca=document.getElementById('hide');
if(esca.value=='3'|| esca.value == 3){
//coloque (acima) onde está 3 e '3' o número de grupos de radios existentes na página
document.forms[0].submit();
alert('dados enviados');
}
}

</script>




<form name="form1" method="post" action="">
<input id="1" type="radio" name="grupo1" value="1">Op&ccedil;&atilde;o 1<br>
<input id="2" type="radio" name="grupo1" value="2">Op&ccedil;&atilde;o 2<br>
<input id="3" type="radio" name="grupo1" value="3">Op&ccedil;&atilde;o 3</p>
<p>
<input id="4" type="radio" name="grupo2" value="1">Op&ccedil;&atilde;o 1<br>
<input id="5" type="radio" name="grupo2" value="2">Op&ccedil;&atilde;o 2<br>
<input id="6" type="radio" name="grupo2" value="3">Op&ccedil;&atilde;o 3</p>
<p>
<input id="7" type="radio" name="grupo3" value="1">Op&ccedil;&atilde;o 1<br>
<input id="8" type="radio" name="grupo3" value="2">Op&ccedil;&atilde;o 2<br>
<input id="9" type="radio" name="grupo3" value="3">Op&ccedil;&atilde;o 3</p>

<br>
<input type="button" value="Enviar"  onclick="checkRa('grupo1');checkRa('grupo3');checkRa('grupo3'); checkGeral()">

<!--Observe que acima você terá que chamar uma função para cada grupo de radios e no fim colocar a função checaGeral() !-->

</form>

<!-- Objeto hidden (essencial para o funcionamento do script !-->

<input type="hidden" id="hide" value="0">

Editado por Alexandrekirpa
Link para o comentário
Compartilhar em outros sites

  • 0

Cara seu script salvou minha pele demais,

estava pesquisando a 2 dias e não achava nada que u pudesse moldar a minha situação, porém

ele tem um erro, que eu como iniciante total, não consigo resolver.

que é mesmo quando aparece o alert avisando que há campos sem resposta, acaba executando o submit,

vou postar abaixo pra você ver:

O que devo fazer?

function checkForm13(){
var a61a = document.getElementById("61");
var a62a=document.getElementById("62");
var a63a=document.getElementById("63");
var a64a=document.getElementById("64");
if(a61a.checked || a62a.checked || a63a.checked || a64a.checked){
checkForm14();
}else{
alert('Há perguntas sem resposta, por favor preencha todas');
return false;
}
}
function checkForm14(){
var a65a=document.getElementById("65");
var a66a=document.getElementById("66");
var a67a=document.getElementById("67");
var a68a=document.getElementById("68");
if(a65a.checked || a66a.checked || a67a.checked || a68a.checked){
//ação que acontece se pelo menos um radio em cada parágrafo estiver checado (ação em caso positivo)

document.forms[0].submit();

}else{
alert('Há perguntas sem resposta, por favor preencha todas');
return false;
}
}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...