A maioria dos navegadores armazena em cache os valores de entrada do formulário. Portanto, quando o usuário atualiza uma página, as entradas têm os mesmos valores.
Aqui está meu problema. Quando um usuário clica em Salvar , o servidor valida os dados POSTados (por exemplo, produtos verificados) e, se não forem válidos, os envia de volta ao navegador. No entanto, conforme declarado acima, mesmo se o servidor limpar a seleção de alguns valores, eles ainda podem ser selecionados por causa do cache do navegador!
Meus dados têm caixas de seleção invisíveis (até que o item pai seja selecionado), de modo que o usuário pode até não saber que algum valor anterior ainda está selecionado, até clicar em Salvar novamente e receber uma mensagem de erro - mesmo que o usuário pense que não. O que é irritante.
Isso pode ser resolvido fazendo Ctrl+ F5, mas não é nem mesmo uma solução. Existe uma maneira automática / programática de dizer ao navegador para não armazenar em cache os dados de entrada do formulário em algum formulário / página?
fonte
<form autocomplete="off"...
uma opção para você? Este problema está ocorrendo em todos os navegadores ou apenas em um em particular?<select>
listas suspensas . Eu tenho uma lista e defini umaselected
escolha, mas atualizar a página mantém as opções selecionadas anteriormente.Respostas:
Você está definindo explicitamente os valores como em branco? Por exemplo:
Isso deve impedir os navegadores de colocar dados onde não deveriam. Como alternativa, você pode adicionar o
autocomplete
atributo à tag do formulário:fonte
checked="false"
, pode funcionar em alguns navegadores. Outra alternativa é usar Javascript / jQuery para desmarcar explicitamente todas as caixas de seleção no carregamento da página.De uma referência de Stack Overflow
Não funcionou com value = "" se o navegador já salvou o valor, então você deve adicionar.
Para uma tag de entrada, há o atributo autocomplete que você pode definir:
Você também pode usar o preenchimento automático para um formulário.
fonte
autocomplete="off"
não ter efeito quando usado em elementos de formulário individuais - mesmo com ovalue
atributo explicitamente definido em branco, e ao enviar umCache-Control: Must-Revalidate
cabeçalho, isso não teve efeito. Tive que aplicar oautocomplete="off"
atributo ao<form>
próprio elemento para suprimir esse comportamento no Chrome.Outra abordagem seria redefinir o formulário usando JavaScript logo após o formulário no HTML:
fonte
Basicamente, existem duas maneiras de limpar o cache:
ou
fonte
Isso funcionou para mim em navegadores mais recentes:
fonte