Почему флажок остается установленным в FF3, но не в IE, Chrome или - PullRequest
2 голосов
/ 16 октября 2008

Итак - у меня есть флажок

<asp:CheckBox ID="chkOrder" runat="server" Visible='<%#IsCheckBoxVisible() %>' 
     Checked="false"
     OnCheckedChanged="chkOrder_CheckedChanged" AutoPostBack="true" 
     EnableViewState="false"></asp:CheckBox>

тот, что выше. Теперь флажок находится в виде сетки и связан с данными - для всех строк в виде сетки флажок установлен в значение false. Проблема в том, что первый флажок все еще установлен.

В IE проблема не существует, то же самое для Chrome. У меня заканчиваются варианты. Также, если я использую

$("checkboxName").attr("checked"); // verified on jquery ready function.

В ФФ это правда; IE ложно; Хром ложный.

Какие-нибудь советы?

EDIT

Теперь приготовьтесь к этому: в сгенерированном html - атрибута НИКАК не проверено. Разница между FF и IE равна точно так же .

Другое дело - на сетке, содержащей флажки, есть панель ajax, и когда я пролистываю сетку, попробуйте перейти на страницу 2 - сработал флажок selectedChanged in codebehind.

Ответы [ 7 ]

16 голосов
/ 16 октября 2008

Firefox запоминает состояние полей формы по умолчанию. Ctrl+F5 заставит Firefox очистить этот кеш.

Вы можете отключить это для отдельных форм и элементов ввода:

<form autocomplete="off"> 

<input ... autocomplete="off" /> 
6 голосов
/ 16 октября 2008

Вы должны полностью опустить атрибут «checked», если вы не хотите, чтобы флажок был отмечен, так как проверка инициируется присутствием атрибута checked, а не его значением:

Флажки (и переключатели) являются переключателями включения / выключения, которые могут переключаться пользователем. Переключатель включен, когда установлен атрибут проверяемого элемента управления .

http://www.w3.org/TR/html401/interact/forms.html#checkbox

Для меня следующая разметка создает флажок, который отмечен в IE, Firefox и Opera, как и следовало ожидать на основании спецификации:

<input type="checkbox" checked="false">
4 голосов
/ 16 октября 2008

В некоторых php-кодах, которые я делал недавно, я заметил, что FF3 запоминает то, что я проверял, даже после обновления страницы F5. Просмотр исходного кода показал правильный HTML, который я хотел сгенерировать. Чтобы обойти это, нужно было перейти к адресной строке и снова запросить страницу.

Почему эта работа была необходима, я не уверен, но с точки зрения удобства использования я это оценил, но не во время разработки.

1 голос
/ 22 марта 2011

это проливает свет на интересную причуду с флажками. вот несколько очень простых HTML, которые я придумал, чтобы правильно подвести итог:

<html>
<body>

<input type="checkbox" checked="false" id="cb" />

<script language="javascript">
if (cb.checked == true)
  document.write('this is retarded');
</script>

</body>
</html>
0 голосов
/ 22 апреля 2010
$("input[id$=chkOrder]").click(function() {        
    if (!$(this).attr("checked")) { $(this).removeAttr("checked"); }
    else { $(this).attr("checked", "checked"); }
})
0 голосов
/ 16 октября 2008

Это также происходит при выборе блоков в FireFox 3, что может быть серьезной проблемой, если вы используете указанный блок для запуска AJAX / обновления страницы.

Если пользователь обновляет страницу или выполняет какие-то странные действия с кнопкой «Назад», он может остаться с выбранным полем выбора, но на самом деле его нужно отменить и повторно выбрать для повторного запуска AJAX.

В этом случае я обнаружил, что использование события body onunload для очистки любых флажков select / "решает" "проблему".

0 голосов
/ 16 октября 2008

Вы пытались сравнить сгенерированный HTML из FF и IE? (с "просмотром исходного кода html")

Просто для более точной локализации проблемы. Это лишь небольшой шанс, но если HTML-код отличается для обоих браузеров, на стороне сервера возникает проблема с тем, как ASP создает HTML-код.

Если оба одинаковых и полностью HTML-жалобы вы нашли ошибку в FF,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...