Script para marcar todos checkbox de um formulário
JavaScript January 7th, 2008Bem, uma postagem rápida com o um código facin.
Quando queremos marcar todos checkbox de um formulario, por exemplo para excluir alguns registros ou atualizar uma lista de registros, por muitas vezes são varios registros que você deve marcar um a um. Com este js ele marcarão todos registros do formulario,
Basta passar como parametro o nome do formulario
<script type=”text/javascript”>
MarcaTodos = function( aff, aff2 )
{
var e = eval(’document.’+aff);
for( x = 0; x < e.elements.length; x ++ )
if( e.elements[ x ].type == ‘checkbox’ )
e.elements[ x ].checked = document.getElementById(aff2).checked ? true : false;
}
</script>
Chamando em algum outro checkbox onclick=”MarcaTodos(’formTodosClientes’, this.id);”
Sem muito segredo, basta usar.
ATUALIZAÇÃO
Com ajuda do leitor Diego aí vai um update otimizado do codigo apresentado;
marcaTodos = function(formId, isChecked)
{
var form = document.getElementById(formId);
var elements = form.elements;
var elementsLength = elements.length;
for (var i = 0; i < elementsLength; i++) {
if (elements[i].type == ‘checkbox’) {
elements[i].checked = isChecked;
}
}
}
January 7th, 2008 at 10:46 am
No segundo parâmetro você esta enviando o id de um elemento para depois procurar o element com aquele id e pegar o estado. Sê ja temos a referencia para o objeto, seria melhor enviar o valor do checked no parametro, assim evitamos uma operação a mais em cada loop.
Também e bom manter no cache o numero de elementos no form para que assim não tenha que ser obtido novamente em cada loop. Isso vai ser bastante util quando o form tenha muitos elementos.
Segue uma segunda versão da função marcaTodos:
marcaTodos = function(formId, isChecked) {
var form = document.getElementsById(formId);
var elements = form.elements;
var elementsLength = elements.length;
for (var i = 0; i
onclick=”marcaTodos(’formTodosClientes’, this.checked);”
January 7th, 2008 at 10:49 am
Brigadão diego pelo comentario e ajuda para melhorar o codigo.. poderia me mandar por email a versão completa q aqui no comentario comeu o cod..
para eu adicionar ao post como referencia.. para ficar de mais facil leitura..
vicoluis(*)gmail.com