Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

InterPlanet

Selecao de multiplos checkbox

Recommended Posts

Oi turma! Boa tarde.

 

Por que o código, jquery, comentado não funciona? na verdade funciona, mas apenas uma vez para cada evento, explico melhor: ao mudar pra true, marca tudo, depois para false, desmarca todos os outros, mas depois não funciona mais... :(

 

// SELECAO TOTAL
function listaSelecao() {

/*
var selecionar     = $('#selecaoTotal').is(':checked');
$('input[type=checkbox]').attr('checked', selecionar);
*/

var el             = 0;
var elC            = frmLista.elements.length;
for (var i = 1; i < elC; i++)
    { el           = frmLista.elements[i];
      if ( el.type == 'checkbox' )
         { el.checked        = frmLista.selecaoTotal.checked;
           listaLinha(textoNumeros(el.id)); // outra funca que muda a classe, via jquery
         }
    }
}

 

HTML alvo:

 


              <FORM name="frmLista" action="usuarios/" method="POST">
                <TABLE class="lista">
                  <tr class="lista_linhaTitulo"><td class="lista_celSelecao"><input type="checkbox" name="selecaoTotal" id="selecaoTotal" onClick="listaSelecao();"></td><td class="lista_celAcao">-</td><td class="lista_celTitulo" style="width:20%;">Usuário</td><td class="lista_celTitulo" style="width:20%;">Contato</td><td class="lista_celTitulo" style="width:15%;">Nível</td><td class="lista_celTitulo" style="width:15%;">Função</td><td class="lista_celTitulo" style="width:10%;">Acesso</td><td class="lista_celTitulo" style="width:10%;">Cadastro</td></tr>
                  <tr class="lista_linha" id="l1"><td class="lista_celSelecao"><input type="checkbox" id="s1" name="selecao[1]" value="16" onChange="listaLinha(1);"></td><td class="lista_celAcao"><a href="usuarios/editar/00016/"><img src="temas/padrao/midia/img/bt_atualizar.png" title="Ver/editar o usuário [ Demo N1 ]"></a> <a href="usuarios/00016/desativar.exe"><img src="temas/padrao/midia/img/bt_desativar.png" title="Desativar o registro do usuário [ Demo N1 ]"></a> <a href="usuarios/00016/excluir.exe"><img src="temas/padrao/midia/img/bt_apagar.png" title="Excluir o usuário [ Demo N1 ]"></a></td><td class="lista_cel"><div class="lista_divDes">Demo N1</div></td><td class="lista_cel">-</td><td class="lista_cel">Usuário</td><td class="lista_cel">Demonstração</td><td class="lista_cel">10/02/2013 01:15:02</td><td class="lista_cel">Ativo<br>09/02/2013</td></tr>
                  <tr class="lista_linha" id="l2"><td class="lista_celSelecao"><input type="checkbox" id="s2" name="selecao[2]" value="17" onChange="listaLinha(2);"></td><td class="lista_celAcao"><a href="usuarios/editar/00017/"><img src="temas/padrao/midia/img/bt_atualizar.png" title="Ver/editar o usuário [ Demo N2 ]"></a> <a href="usuarios/00017/desativar.exe"><img src="temas/padrao/midia/img/bt_desativar.png" title="Desativar o registro do usuário [ Demo N2 ]"></a> <a href="usuarios/00017/excluir.exe"><img src="temas/padrao/midia/img/bt_apagar.png" title="Excluir o usuário [ Demo N2 ]"></a></td><td class="lista_cel"><div class="lista_divDes">Demo N2</div></td><td class="lista_cel">-</td><td class="lista_cel">Cadastrador</td><td class="lista_cel">Demonstração</td><td class="lista_cel">-</td><td class="lista_cel">Ativo<br>09/02/2013</td></tr>
                  <tr class="lista_linha" id="l3"><td class="lista_celSelecao"><input type="checkbox" id="s3" name="selecao[3]" value="1" onChange="listaLinha(3);"></td><td class="lista_celAcao"><a href="usuarios/editar/00001/"><img src="temas/padrao/midia/img/bt_atualizar.png" title="Ver/editar o usuário [ Fernando Lima ]"></a> <a href="usuarios/00001/desativar.exe"><img src="temas/padrao/midia/img/bt_desativar.png" title="Desativar o registro do usuário [ Fernando Lima ]"></a> <a href="usuarios/00001/excluir.exe"><img src="temas/padrao/midia/img/bt_apagar.png" title="Excluir o usuário [ Fernando Lima ]"></a></td><td class="lista_cel"><div class="lista_divDes">Fernando Lima</div></td><td class="lista_cel">fernando.ipis@gmail.com<br>(84) 8833-2668</td><td class="lista_cel">Programador</td><td class="lista_cel">Programador</td><td class="lista_cel">10/02/2013 15:14:38</td><td class="lista_cel">Ativo<br>01/01/2013</td></tr>
                  <tr class="lista_linhaFinal"><td class="lista_celMultipla" colspan="8"><span class="inline">Com selecionados: <select class="form_selecao" name="acaoMultipla" id="acaoMultipla" onChange="listaAcao(this.value);"><option value="#">---</option><option value="ativar">Ativar</option><option value="desativar">Desativar</option><option value="excluir">Excluir</option></select></span></td></tr>
                </TABLE>
              </FORM>

 

O que há de errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho certeza de o porque de não estar funcionando, criei o script abaixo e rodei normalmente.

$('input[type="checkbox"].todos').click(function() {
    $('input[type="checkbox"][name="teste[]"]').attr('checked' , $(this).is(':checked'));
});
Basicamente o script acima indica que, ao evento de click em cima do checkbox com a class todos, colocará o seu estado (checked=true/false) em todos os inputs do tipo checkbox que possuem o name teste[].

 

Seu HTML está muito confuso e não me dei ao luxo em ajeitá-lo. Criei o meu e testei.

Meu HTML de testes:

        
<form>
    <input type="checkbox" class="todos" />
            
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
    <input type="checkbox" name="teste[]" />
</form>
Em qual navegador você está testando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!

 

Entendo, so repare que meu código, apesar de não funcionar, é apenas este:

function listaSelecao() { $('input[type="checkbox"][name="selecao[]"]').attr("checked", $('input[type="checkbox"][name="selecaoTotal"]').is(":checked")); }

Até melhorei retirando a var selecionar e colocando o name no seletor, conforme sugeriu, e fica mais restritivo, ok, porém o problema, persiste:

 

...na verdade funciona, mas apenas uma vez para cada evento, explico melhor: ao mudar pra true, marca tudo, depois para false, desmarca todos os outros, mas depois não funciona mais...

 

Isto que não entendo... :(

Se eu usar o codigo javascript puro citado, no primeiro post, funciona sempre.

 

 

 

 

EDIT:

-------------------------------------------------------

 

Meu navegador é firefox, também testo os scripts no chrome e no ie 8, e em ambos: o mesmo problema. Só funciona uma vez pra cada condição, true e false.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.