Eu sei que isso é antigo, mas acabei de encontrar esse problema e nenhuma das respostas é adequada. A solução do nickf funciona, mas requer javascript. A melhor maneira é desabilitar o campo e ainda passar o valor é usar um campo de entrada oculto para passar o valor para o formulário. Por exemplo,
<input type="text" value="22.2222" disabled="disabled" />
<input type="hidden" name="lat" value="22.2222" />
Desta forma, o valor é passado, mas o usuário vê o campo esmaecido. O atributo somente leitura não o torna cinza.