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

(Resolvido) Validação de checkbox com name="xxx[]"


Aleradical

Pergunta

Estou tentando fazer uma validação de checkbox com esse script abaixo:

<script language="JavaScript">
function maximoCheckboxarCheckbox(nome, maximoCheckbox){
    for (var i=0; i<nome.length; i++){
        nome[i].onclick=function(){
        var num_marcados=0;
        for (var i=0; i<nome.length; i++)
            num_marcados+=(nome[i].checked)? 1 : 0
        if (num_marcados>maximoCheckbox){
            alert("O número máximo de categorias pelo Módulo que foi selecionado é de "+maximoCheckbox+" opções");
            this.checked=false;
            }
        }
    }
}
</script>
O Formulário e o seguinte:
<FORM name="anuario2010" action="enviar.php" method="post">
<input name="categoria[]" type="checkbox" id="categoria" value="A">A<br>
<input name="categoria[]" type="checkbox" id="categoria" value="B">B<br>
<input name="categoria[]" type="checkbox" id="categoria" value="C">C<br>
<input name="categoria[]" type="checkbox" id="categoria" value="D">D<br>
<input name="categoria[]" type="checkbox" id="categoria" value="E">E<br>
<input name="categoria[]" type="checkbox" id="categoria" value="F">F<br>
</form>
<script type="text/javascript">
maximoCheckboxarCheckbox(document.forms.anuario2010.categoria[], 2);
</script>

Se eu renomear o name para "categoria" e no script maximoCheckboxarCheckbox(document.forms.anuario2010.categoria, 2); funciona certinho mas quando trabalho com as [] não funciona e eu preciso delas porque os dados vão para uma pag PHP.

Se alguém puder dar uma força eu agradeço

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Vamos lá para acessar elementos array em javascript você deve pegar o elemento inteiro ...

<script>
function maximoCheckboxarCheckbox(maximoCheckbox) {
 var total_selecionados = 0;
 var obj_formulario     = document.anuario2010["categoria[]"];

 for (var c = 0; c < obj_formulario.length; c++) {
  if (obj_formulario[c].checked) { 
   total_selecionados = (total_selecionados + 1); 
  }
 }

 if (total_selecionados > maximoCheckbox) { 
  alert("O número máximo de categorias pelo Módulo que foi selecionado é de " + maximoCheckbox + " opções");
  return false; 
 } else {
  return true;
 }
}
</script>

<form action="enviar.php" onSubmit="java script:return maximoCheckboxarCheckbox(2);" method="post" name="anuario2010">
<input name="categoria[]" type="checkbox" id="categoria" value="A">A<br>
<input name="categoria[]" type="checkbox" id="categoria" value="B">B<br>
<input name="categoria[]" type="checkbox" id="categoria" value="C">C<br>
<input name="categoria[]" type="checkbox" id="categoria" value="D">D<br>
<input name="categoria[]" type="checkbox" id="categoria" value="E">E<br>
<input name="categoria[]" type="checkbox" id="categoria" value="F">F<br>
<input type="submit" value="Validar">
</form>

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

  • 0

O problema é que tirando o "[]" quando você recebe o valor você ira receber apenas o 1º checkbox os outros serão ignorados :P; no caso ele quer receber todos os checados e não apenas 1 .... para dar certo do seu jeito cada checkbox teria que ter um nome diferente.

Pegue e faça um arquivinho PHP ou ASP e submeta os dados, faça o teste e verá que ele não ira conseguir ler adequadamente os valores :P sem o "[]" <_<

* É só ler o último paragrafo do que ele mesmo escreveu: "Se eu renomear o name para "categoria" e no script maximoCheckboxarCheckbox(document.forms.anuario2010.categoria, 2); funciona certinho mas quando trabalho com as [] não funciona e eu preciso delas porque os dados vão para uma pag PHP."

errr... não seria mais fácil usar o código dele, só tirando os "[]" do parâmetro que ele passou pra função? eu testei aqui deu certinho...
Editado por SK15
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...