Por que uma caixa de seleção permanecer marcada no FF3, mas não no IE, Chrome ou
-
03-07-2019 - |
Pergunta
Então - Eu tenho uma caixa de seleção
<asp:CheckBox ID="chkOrder" runat="server" Visible='<%#IsCheckBoxVisible() %>'
Checked="false"
OnCheckedChanged="chkOrder_CheckedChanged" AutoPostBack="true"
EnableViewState="false"></asp:CheckBox>
o descrito acima. Agora, a caixa de seleção está em um gridview e na ligação de dados - para todas as linhas no gridview a caixa de seleção é definida como falsa. O problema é que a primeira opção ainda é verdade marcada.
No IE o problema não existe, mesmo para Chrome. Eu estou ficando sem opções. Além disso, se eu uso
$("checkboxName").attr("checked"); // verified on jquery ready function.
Em FF é verdade; IE false; falsa Chrome.
Todas as dicas?
Editar
Agora prepare-se para isso: no HTML gerado - não há verificada atributo. O diff entre FF e IE é exatamente o mesmo .
Outra coisa - a grade que contém as caixas de seleção tem um painel de ajax nele e quando eu página da grelha, tentar ir para a página 2 -. A CheckedChanged em codebehind é acionado
Solução
Em alguns codificação eu fiz recentemente, notei que FF3 estava lembrando o que eu marcada, mesmo depois de uma atualização de página F5 php. Olhando para a fonte mostrou o HTML correto que eu queria gerado. Para contornar este era ir até a barra de endereços e forçar o pedido para a página novamente.
Por este trabalho em torno era necessário Eu não tenho certeza, mas de uma perspectiva normal de usabilidade I apreciado, não apenas durante o desenvolvimento.
Outras dicas
O Firefox lembra o estado do formulário campos por padrão. Ctrl+F5
irá forçar o Firefox para limpar esta cache.
Você pode desativar isso para formulário de entrada e elementos individuais:
<form autocomplete="off">
<input ... autocomplete="off" />
Você deve omitir o "marcada" atributo completo, se você não quiser que a caixa de seleção para ser verificados, como a verificação é acionado pelo presença de um atributo checked
, não o seu valor:
As caixas de verificação (e botões de rádio) são on / off switches que podem ser alternadas pelo usuário. Um switch é "on" quando atributo checked do elemento de controle é definido .
http://www.w3.org/TR/html401/ Interact / Forms.html # checkbox
Para mim, a marcação a seguir produz uma caixa de seleção que está marcada no IE, Firefox e Opera, como seria de esperar com base na especificação:
<input type="checkbox" checked="false">
Esta lança luz sobre uma peculiaridade interessante com caixas de seleção. aqui está um pouco html muito simples eu vim acima com para realmente resumir corretamente:
<html>
<body>
<input type="checkbox" checked="false" id="cb" />
<script language="javascript">
if (cb.checked == true)
document.write('this is retarded');
</script>
</body>
</html>
Você já tentou comparar o HTML genrated de FF e IE? (Com "exibição da fonte de html")
Apenas para localizar o problema um pouco mais precisamente. É apenas uma pequena chance, mas se o HTML é diferente para ambos os navegadores, você tem um problema na serverside com a forma como ASP cria o HTML.
Se ambos são o mesmo, e totalmente queixa HTML de ter encontrado um bug no FF,
Isso também acontece para selecionar caixas no Firefox 3, que pode ser uma grande dor se você usar a referida caixa para executar AJAX / atualizar a página.
Se as atualizações de usuários da página ou faz algum botão volta estranheza eles podem acabar com a caixa de seleção ainda selecionado, mas na verdade tem que un-selecionar e re-selecionar, a fim de executar re-o AJAX.
Neste caso, eu descobri que usar o evento onunload corpo para limpar os / caixas selecione "Resolve" o "problema".
$("input[id$=chkOrder]").click(function() {
if (!$(this).attr("checked")) { $(this).removeAttr("checked"); }
else { $(this).attr("checked", "checked"); }
})