Почему Firefox не показывает правильную опцию выбора по умолчанию?
я делаю веб-приложение для управления SKUS продукта. Одна из частей этого-связать SKU с именами продуктов. В каждой строке таблицы я перечисляю SKU и показываю <select>
коробка с названиями продуктов. Продукт, который в настоящее время связан с этим SKU в базе данных, имеет атрибут selected="selected"
. Это можно изменить и обновить через AJAX.
здесь много товара <option>
s-103, если быть точным - и этот список повторяется в <select>
по каждому ряд.
из другого ввода на странице Я использую запросы jQuery AJAX для добавления новых ассоциаций SKU / product, и чтобы было ясно, что они добавляются мгновенно, я вставляю их в top таблицы с небольшим эффектом подсветки. Поскольку количество SKUs увеличивается после 10 или около того, если я обновляю страницу (которая загружает все обратно из базы данных, упорядоченной по названию продукта), Firefox начинает показывать некоторые неправильные параметры, выбранные по умолчанию. Она не последовательна о какой неправильной опции он показывает, но, похоже, смешивает параметры, которые существовали до перезагрузки страницы.
если я проверю <select>
используя Firebug,select="selected"
правильное <option>
тег. Обновление страницы (или уход и ввод URL-адреса этой страницы для возврата) не делает ее правильной, но жесткое обновление (Ctrl+F5) делает.
и Chrome, и IE7 отображают это правильно в первую очередь.
мой теория заключается в том, что это результат ошибочной стратегии кэша Firefox. Это звучит правильно? Есть ли способ сказать в моем коде "если эта страница обновлена, сделайте ее жестким обновлением - перезагрузите все с нуля?"
обновление
чтобы решить эту проблему, я изменил стратегию.
- ранее, я поставил
<select>
с длинным списком<option>
s в каждой строке таблицы с текущим значением по умолчанию - теперь я ставлю ток значение в
<span>
. Если пользователь нажимает кнопку "Изменить", заменить<span>
С<select>
, и кнопка " Изменить "становится кнопкой" подтвердить". Если они изменяют параметры и нажимают "подтвердить", AJAX обновляет базу данных, а также<select>
восходит к<span>
на этот раз с новым значением.
это имеет два преимущества:
- он исправляет ошибку, описанную выше
- требует далеко меньше элементов DOM на странице (все эти избыточные
<option>
s)
10 ответов
Firefox сохраняет выбранные элементы формы при обновлении. Это нарочно. Ctrl+F5-это" жесткое " обновление, которое отключает это поведение.
--
или Command+Shift+R, Если вы находитесь на Mac
У меня была похожая проблема, но после добавления autocomplete="off"
HTML атрибут для каждого тега select он работал. [Я использовал Firefox 8]
простой способ предотвратить кэширование Firefox последний выбранный вариант-удалить все элементы опции на странице выгрузки. Например (при условии jQuery):
$(window).unload(function() {
$('select option').remove();
});
у меня была такая же проблема. Я пытался изменить значение select в зависимости от того, какой параметр был выбран="выбран", но Firefox не работал. По умолчанию всегда используется первый вариант.
Chrome, Safari и т. д. Работали, когда я это делал:
$( 'option[value="myVal"]' ).attr( 'selected', 'selected' );
... но это не работало в FF.
поэтому я попытался:
$( 'option[value="myVal"]' ).prop( 'selected', 'selected' );
и это работает.
С jQuery версии v1.9.1
хотя это старый вопрос, но ниже Решение может помочь кому-то
в firefox я заметил, что атрибут "selected" не будет работать, если вы не разместите выберите внутри форма, где форма имеет атрибут name.
<form name="test_form" method="POST">
<select name="city">
<option value="1">Test</option>
<option selected="selected" value="2">Test2</option>
</selecct>
еще раз запомните:
- форма должна быть "имя" атрибут и
- "выберите" должно быть внутри форма.
Firebug имеет функцию отключения кэша для именно этого сценария.
более глубокое долгосрочное решение состоит в том, чтобы выяснить, как установить серверную сторону заголовков без кэша. Какой веб-сервер вы используете?
каждый раз, когда у меня были странные ошибки выбора опции в Firefox, это было потому, что у меня было несколько опций, помеченных как выбранные. Вы уверены, что только один помечен как таковой? Кажется, вы могли бы выйти из wack довольно легко, если вы меняете это с AJAX.
FYI: чтобы остановить Firefox от восстановления ранее выбранной опции после перезагрузки страницы, вы можете разместить весь <form>
содержащий <select>
параметры внутри <iframe>
.
когда поля выбора находятся в <iframe>
и вы перезагружаете страницу контейнера, Firefox, наконец, ведет себя как и все другие браузеры, просто сбросив параметры выбора.
Я понял. Если вы ставите onunload или $(window).выгрузка (jquery) на вашем HTML без заголовка кэша Firefox перезагружает страницу и инициализирует DOM даже с кнопки "Назад".