Firefox игнорирует выбранную опцию= " выбрано"


Если вы измените раскрывающийся список и обновите страницу, Firefox, похоже, проигнорирует выбранный атрибут.

<option selected="selected" value="Test">Test</option>

он фактически выберет вариант, который вы ранее выбрали (до обновления). Это в конечном итоге является проблемой для меня, так как есть событие, вызванное на выпадающем списке, который изменяет другие вещи. Есть ли способ заставить firefox остановить это поведение (кроме запуска другого события при загрузке страницы)?

20 89

20 ответов:

AFAIK, это поведение жестко закодировано в Firefox.

вы можете попробовать установить каждый элемент формы в его defaultValue при загрузке страницы.

добавить autocomplete="off" атрибут HTML для каждого тега select. (источник: https://stackoverflow.com/a/8258154/260080)

это исправляет странное поведение в FireFox.

в firefox я заметил, что атрибут" выбранный " не будет работать, если вы не поместите select внутри формы, где форма имеет атрибут name.

просто была та же проблема, поверьте мне, что это было более 10 часов, борясь с этим глупым поведением firefox, у меня есть 7 выпадающих списков, каждый из них вызовет событие и заполнит 24 скрытых входа, поэтому вы можете себе представить, что правильный вариант выбран с 24 неправильными входными значениями!!! решение, которое я наконец нашел, - это сбросить форму с помощью Javascript, добавив эту строку кода:

window.onload = function() { document.forms['MarkerForm'].reset(); };

PS: входные данные имеют значения, извлеченные из базы данных, поэтому сброс формы не пустой любое значение, но в некотором роде говорит firefox, чтобы вернуться в ад к выбранному=выбранному варианту!

Это просто Firefox, помня ваш предыдущий выбор при обновлении. Вместо этого попробуйте жесткое обновление.

кроме того, тот же вопрос здесь: https://stackoverflow.com/a/1505693/1069232

также смотрите здесь:https://bugzilla.mozilla.org/show_bug.cgi?id=274795

я использую FF 25.0.1

его игнорировать selected="" и selected="selected".

но если я просто попробую selected опция выбрана.

странное (несоответствующее) поведение. Я знаю selected является допустимым HTML5, и это самая короткая форма, но я обычно пишу код, который также проверяет хорошо сформированный XML, так что я могу использовать любой инструмент проверки XML для проверки моих результатов очень строгим способом (и обмен данными очень прост...)

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

HTML5:  boolAttr="" | boolAttr="boolAttr" | boolAttr
XHTML5: boolAttr="" | boolAttr="boolAttr"

Я предпочитаю первый, так как он почти такой же короткий, как и последний (не соответствующий xml) вариант, но должен проверяться как XHTML5, так и HTML5. Так что я надеюсь, Mozilla это исправит!

можно назвать .reset() в форме перед обновлением страницы.

использовать .prop () вместо .attr ()

This does not work in firefox.
  $( 'option[value="myVal"]' ).attr( 'selected', 'selected' );
use this one
  $( 'option[value="myVal"]' ).prop( 'selected', 'selected' );

In other way
  $( this ).prop( 'selected', 'selected' );

С именем лучше,=>>

form id="UMForm" name="UMForm" class="form"

select примет выбранный атрибут

Это может быть ошибка в mozilla, но попробуйте дать выпадающее имя.

вложите select в атрибут формы, и он будет работать.

<!-- will not work in firefox -->
<option selected="selected" value="Test">Test</option>

и

<!-- this will work in firefox -->
<form>
 <option selected="selected" value="Test">Test</option>
</form>

автозаполнение не работает для меня.

это исправление javscript, написанное в jquery, которое я использую:

$('input[type="radio"][selected]').click();
<option selected="selected" value="Test">Test</option>

в этом случае это работало как для Chrome, так и для Firefox.

$('option[value="Test"]').prop('selected', true);

Я был с помощью .attr() вместо .prop()

показать первый элемент выпадающего списка, используйте ProjectName.ClearSelection();

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

$(document).ready(function () {
    $("#content_ProjectName option[value='1']").prop("selected", true);
});

Если вы измените выбор и обновите страницу firefox восстановит ваши изменения в форме, вот почему вы чувствуете, что выбор не работает. Вместо обновления попробуйте открыть ссылку на новой вкладке.

Это мое решение:

var select = document.getElementById('my_select');
for(var i=0; i < select.options.length; i++){
    select.options[i].selected = select.options[i].attributes.selected != undefined;
}

Я просто поставил это в верхней части страницы (с соответствующим набором идентификаторов), и это работает для меня. Заменив getElementById на цикл по всем выделениям на странице, Я оставляю в качестве упражнения для читателя ;).

для меня ни одно из решений выше не работало. Я должен был явно установить выбор, если ни один не был установлен:

if (foo.find(':selected').length === 0) {
    $(foo.find('option')[0]).attr('selected', 'selected');
}

Я хочу, чтобы firefox исправил это : (

на работе я просто исправил ошибку, когда опция выбора окна отображалась правильно в Chrome, но не в Firefox, на той же веб-странице. Это оказалось чем-то совершенно другим, чем проблемы выше, но, возможно, это проблема, которую вы испытываете.

в Chrome, выберите поле шрифт-цвет был черным. По какой-то причине в Firefox поле выбора унаследовало цвет шрифта из контейнера, который был белым. Как только я добавил правило CSS, чтобы заставить это поле выбора шрифт-цвет должен быть черным, набор значений был правильно отображен.

попробуйте отключить autocompleteатрибут выбора ввода ... иногда браузер игнорирует select потому что

ни autocomplete="off" или поместить его внутрь form работает для меня.

что работала должен был использовать только выбранный атрибут без "значения" такой:

<option @(Model.Source == TermSource.Instagram ? "selected" : "")>
    Instagram
</option>
<option @(Model.Source == TermSource.Facebook ? "selected" : "")>
    Facebook
</option>

так что либо он рендерит <option selected>...</option>, или просто <option>...</option>