Почему Firefox не показывает правильный вариант выбора по умолчанию?
я делаю веб-приложение для управления SKU продукта. Одна часть этого-связать SKU с названиями продуктов. В каждой строке таблицы я перечисляю SKU и отображаю <select>
коробка с названиями продуктов. Продукт, который в настоящее время связан с этим SKU в базе данных, получает атрибут типа selected="selected"
. Это может быть изменено и обновлено с помощью AJAX.
здесь много товара <option>
s-103 если быть точным - и этот список повторяется в <select>
по каждому ряд.
из другого ввода на странице Я использую запросы jQuery AJAX для добавления новых ассоциаций SKU/product и для того, чтобы было ясно, что они добавляются мгновенно, я вставляю их в top таблицы с небольшим эффектом подсветки. Поскольку количество SKU увеличивается после 10 или около того, если я обновляю страницу (которая загружает все обратно из базы данных, упорядоченной по имени продукта), Firefox начинает показывать некоторые неправильные параметры, выбранные по умолчанию. Это не соответствует о том, какой неверный параметр он показывает, но, похоже, смешивает параметры, которые существовали до перезагрузки страницы.
если я проверю <select>
используя Firebug, the 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 в зависимости от того, какой параметр был выбран="selected", но Firefox не работал. Он всегда будет по умолчанию для первого варианта.
Chrome, Safari и т. д. Работали, когда я это делал:
$( 'option[value="myVal"]' ).attr( 'selected', 'selected' );
... но это не работало в FF.
поэтому я попробовал:
$( 'option[value="myVal"]' ).prop( 'selected', 'selected' );
и это работает.
jQuery v1.9. 1
хотя это старый вопрос, но ниже Решение может помочь кому-то
в firefox я заметил, что атрибут "выбранный" не будет работать, если вы не разместите выберите внутри форма, где форма имеет атрибут 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, наконец, ведет себя как и все другие браузеры, просто сбросив параметры выбора.