При использовании тега HTML <select>измененное значение «selected» не отображается в Firefox - PullRequest
5 голосов
/ 01 февраля 2011

Здравствуйте (это копия моего поста в списке рассылки Seaside; сначала попробуйте в stackoverflow), Как получить отображаемое отображение выпадающего списка выбора, чтобы показать обновленный выбор из другого сеанса в Firefox? (Я использую 3.6.13)

Эта проблема не появляется в Chrome, IE или Opera.

Вот сценарий: у меня есть объект домена с атрибутом, отображаемым в раскрывающемся списке. Некоторые другие сеансы обновляют атрибут. Я обновляю свой дисплей, но визуализированный выбор не меняется. Используя Firebug, сгенерированный HTML показывает обновленный выбор. Это могут быть базовые знания HTML, но должно ли отображаемое значение не обновляться, чтобы показать измененную «выбранную» опцию? Или значение предназначено для установки только на начальном отображении страницы, а затем только с помощью действия пользователя?

Пример: у меня есть демонстрационный компонент Seaside с переменной класса #testStateListSelection, которая выбрана равной 'one' в сеансе Seaside. Если я изменю значение на «три» в другом сеансе «Приморский», отображаемое значение останется «единым» в исходном сеансе после повторного рендеринга, даже если «выбранный» в сгенерированном HTML показывает «три».


renderSelectionListOn: html
    html form: [
        html select 
            list: #('one' 'two' 'three' 'four' 'five'); 
            selected: self class testStateListSelection; 
            callback: [:value | self class testStateListSelection: value].
        html break.
        html submitButton
            callback: [Transcript cr; show: self class testStateListSelection];
            with: 'Save']

...the displayed value shows 'one', even though the HTML is...

<select name="1">
<option value="1">one</option>
<option value="2">two</option>
<option value="3" selected="selected">three</option>
<option value="4">four</option>
<option value="5">five</option>
</select>

Как получить в раскрывающемся списке выбранное значение для отображения «три»?

Кстати: все, что я знаю о HTML и поведении браузера, я узнал из кодирования Seaside, поэтому у меня может быть перекос ;-)

Спасибо за любую помощь.

Ответы [ 4 ]

8 голосов
/ 01 февраля 2011

Проблема в том, что при обновлении страницы браузер запоминает, какой вариант был выбран ранее.Эта функция предназначена для того, чтобы затруднить потерю данных форм во время длинных форм, и обсуждается на форумах Mozillazine

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

2 голосов
/ 01 февраля 2011

Другая причина проблемы может заключаться в том, что ваш браузер пытается автоматически заполнить форму на основе вашего последнего представления. Убедитесь, что вы отключили эту функцию в настройках своего веб-браузера. Вы также можете указать тегу form с неофициальным атрибутом не выполнять автозаполнение:

html form noAutocomplete; with: [ ...
1 голос
/ 16 ноября 2011

При использовании javascript для обновления страницы ...

window.location.reload();

... НЕ будет повторно отображать выбранные элементы.Они сохранят свои динамические значения независимо от того, что говорит новый исходный HTML.

Чтобы принудительно повторно отрендерить выбранные элементы, используйте ...

window.location.reload(true);
1 голос
/ 01 февраля 2011

При каждом обновлении страницы запускается средство доступа self class testStateListSelection.

На самом деле, код, который вы предоставляете, прекрасно работает для меня. Вы уверены, что аксессоры работают как положено?

testStateListSelection
   ^ testStateListSelection    " <-- forgetting the return is a common problem "

testStateListSelection: aString
   testStateListSelection := aString
...