Formulários HTML: Problemas com campos desabilitados?

Que desenvolvedor web nunca teve problemas com os campos desabilitados não irem no request?!? Pois é. Tivemos muito aqui! Foi aí que tive a idéia deste maravilhoso JavaScript que resolve o problema.

[ Hits: 23.640 ]

Por: Gabriel Ortiz Lour em 07/12/2006


Explicando o abacaxi...



Você, desenvolvedor web, já teve problemas ao submeter um formulário e.... cadê o valor do meu campo??? Ele estava desabilitado... será que é isto? Sim! Os campos desabilitados NÃO vão no request ao submeter um formulário. Que inferno! Espero que o HTML 2.0 resolva isso.

Mas... Enquanto esperamos, aqui esta a solução!!!

o pequeno JavaScript a seguir é, na minha modesta opinião, maravilhoso.

O que ele faz?
Temos duas funções JS (uma seria "public" e outra "private"), o que o desenvolvedor precisa fazer é chamar a primeira delas "procuraDesabilitados()" passando o formulário como parâmetro. Pronto!

Por baixo dos panos o que é feito? A rotina chamada vai (recursivamente) procurando todos os campos dentro do formulário e para cada campo encontrado ela faz o seguinte:

1. Verifica se o campo esta desabilitado. se não tiver pula.

2. Altera o nome do campo, colocando "Auxiliar" no final, para não valer mais.

3. Cria dinamicamente um novo campo escondido (hidden) com o mesmo nome e valor do campo anterior (renomeado para Auxiliar).

4. Pronto!

Agora temos um campo escondido, com o nome do campo original, que vai enviar corretamente os dados no request, e como o campo desabilitado não envia valor, deve-se ignorar tudo que vier pelos campos "Auxiliar".

Siga para a próxima página que teremos o código JavaScript.

Na terceira página teremos um pequeno teste PHP de exemplo.

Dúvidas, sugestões, críticas... Estamos aí!

Testado no super Firefox e até no lixo do IbugsE.

    Próxima página

Páginas do artigo
   1. Explicando o abacaxi...
   2. Código JavaScript
   3. Pequeno PHP para testes
Outros artigos deste autor

Servidor Apache Profissional

Instalando drivers para placas de vídeo SiS

Leitura recomendada

Verificando a consistência de um formulário com JavaScript

Select dinâmico com PHP, Javascript e MySQL

Verificando a consistência de CPF e CNPJ em um formulário com JavaScript

Dicas simples para dar mais usabilidades aos formulários

W3C - World Wide Web Consortium

  
Comentários
[1] Comentário enviado por Bruno Faria em 07/12/2006 - 20:49h

Realmente este problema de enviar os dados dos campos desabilitados eh uma dor d cabeça para a maioria dos desenvolvedores. Como voce disse, esperaremos pela versao 2 para verificar se tal bug fora corrigido.

[2] Comentário enviado por ls_junior em 08/12/2006 - 07:27h

Na minha opnião os campos desabilitados não devem fazer parte do request, para isso tem-se o atributo readonly, que não permite a alteração do valor. No caso dos select/radio/checkbox, que ignoram o atributo readonly, basta desabilitá-los e, antes de enviar o formulário, habilitá-los novamente.

...
function enviarDados() {
for(var i = 0; i < document.form.elements.length; i++) {
if(document.form.elements[i].disabled) {
document.form.elements[i].disabled = false;
}
}
return true;
}
...
<form name="form" id="form" method="post" onsubmit="return enviarDados();">
...


PS: Solução é bastante interessante.

[3] Comentário enviado por jonathantavares em 20/09/2007 - 00:49h

Esses formularios sao bastante interessantes e com boa utilização, mas sempre tem alguns problemas com esses campos, mas existen n solucoes!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts