Pergunta

Eu tenho um formulário Web ASP.NET que contém campos de caixa de texto e campos ocultos. Os valores de campo ocultos são modificados dinamicamente usando o JavaScript do lado do cliente. Publicar o formulário, inspecionar os valores e redirecionar para outra página está funcionando como esperado.

No entanto, quando uso o botão Back do navegador para exibir a página anterior, espero, portanto, veja que todos os campos de formulário ainda são preenchidos com os valores publicados.

No IE e Firefox, esse é o caso dos campos de entrada e entrada ocultos.

No Chrome, este é apenas o caso dos campos de texto. O valor dos campos ocultos é perdido.

É verdade que o Chrome nunca se repova definido dinamicamente Valores de campo de formulário oculto ao navegar pelo histórico do navegador?

Eu coloquei uma pequena amostra para demonstrar o problema e posso prever isso, se necessário. Eu queria primeiro fazer a pergunta para ver se isso é um comportamento bem conhecido e algo que tenho que aceitar.

Foi útil?

Solução

Você não deve confiar nesse comportamento. É diferente entre os navegadores, mesmo entre as versões do navegador. Esse comportamento não é descrito em nenhum padrão. Se você deseja que seus campos tenham valores específicos, pode usar cookies ou sempre fazer solicitações ao servidor quando a página carregar ou usar métodos mais modernos, como armazenamento local (ele não é amplamente suportado).

Outras dicas

Esse problema pode ser resolvido usando um pequeno truque.

O problema é o formulário de campos com tipo = oculto com valores definidos dinamicamente não são tratados corretamente pelo navegador Chrome.

Portanto, a solução é alterar o tipo de campo para enviar texto e usar outro método para ocultar as caixas de texto visíveis. Isso pode ser alcançado ao redor de todas as caixas de texto que transportam valores destinados a serem ocultos por um par de tags de dev e atribuindo o estilo como exibição: nenhum

Em seguida, na página, você não verá as caixas de texto carregando valores ocultos e funcionará corretamente com JavaScript do navegador.

ANTES DA

<input type=hidden name=item_no value=00001>

DEPOIS

<div style="display: none">
    <input type=text name=item_no value=00001>
</div>

Não consigo comentar, talvez meu representante seja muito baixo, mas achei que isso é importante para mencionar.

Eu apenas encontrei esse problema em Ópera Então, a solução emprestada de Senah Fernando, que funcionava em torno dos campos ocultos não sendo restabelecido (obrigado Sanesh). No entanto, o que causou um problema para mim foi que o JavaScript incêndio antes que os campos do formulário sejam atualizados; portanto, se você verificar os valores com o JavaScript como eu estava fazendo, tive que adicionar um Settimeout para garantir que a Opera atualizasse antes de verificar os valores.

Os cookies são tão declarados de outra maneira, mas com a ridícula diretiva da UE sobre a exigência do contrato de uso de biscoitos do visitante, não é uma solução para mim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top