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.
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.
[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.