Почему флажок остается отмеченным в FF3, но не в IE, Chrome или

StackOverflow https://stackoverflow.com/questions/208682

Вопрос

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

<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.

В FF это правда;ИЕ ложь;Хром ложный.

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

РЕДАКТИРОВАТЬ

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

Еще одна вещь: сетка, содержащая флажки, имеет панель ajax, и когда я просматриваю сетку, пытаюсь перейти на страницу 2 - срабатывает флажок CheckChanged в коде программной части.

Это было полезно?

Решение

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

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

Другие советы

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

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

<form autocomplete="off"> 

<input ... autocomplete="off" /> 

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

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

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

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

<input type="checkbox" checked="false">

это проливает свет на интересную особенность флажков.вот очень простой 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>

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

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

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

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

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

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

$("input[id$=chkOrder]").click(function() {        
    if (!$(this).attr("checked")) { $(this).removeAttr("checked"); }
    else { $(this).attr("checked", "checked"); }
})
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top