Pular para o conteúdo

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.
Gabriel Ortiz Lour elbriga
Hits: 27.192 Categoria: Javascript Subcategoria: Formulários
  • Indicar
  • Impressora
  • Denunciar

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.

   1. Explicando o abacaxi...
   2. Código JavaScript
   3. Pequeno PHP para testes

Servidor Apache Profissional

Instalando drivers para placas de vídeo SiS

Dicas simples para dar mais usabilidades aos formulários

Select dinâmico com PHP, Javascript e MySQL

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

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

Detonando robots!

#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

Entre na sua conta para comentar.