2011-02-01 4 views
5

Привет (это копия моего сообщения в списке рассылки Seaside, сначала попробуйте в stackoverflow), Как получить отображаемый показ капли -down выбрать список, чтобы показать обновленный выбор из другого сеанса в Firefox? (Я использую 3.6.13)При использовании тега HTML <select> значение «выбрано» не отображается в Firefox

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

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

Пример: У меня есть демонстрационный приморский компонент с переменной класса #testStateListSelection, который выбран в качестве «одного» в сеансе «Приморский». Если я изменил значение на «три» в другом сеансе на море, отображаемое значение останется «первым» в исходном сеансе после рендеринга снова, даже если «выбранный» в сгенерированном 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>

Как получить раскрывающийся выбранное значение, чтобы показать 'три'?

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

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

+0

Когда вы говорите «после рендеринга снова» - имеет браузер, переключение на другую страницу, или вы просто обновилась (F5 или эквивалент) страница? – Gareth

+0

Просто обновите ... F5 или кнопку «Обновить текущую страницу» –

ответ

8

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

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

+0

Это сводило меня с ума. Спасибо за этот ответ. –

+0

Мне было бы интересно узнать, что можно сделать, чтобы заставить браузер обновлять отображение на основе выбранного значения, не прося пользователя явно перезагрузить материал из адресной строки. – mathieu

1

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

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

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

testStateListSelection: aString 
    testStateListSelection := aString 
+0

Да, аксессоры верны. Я повторяю выбранный параметр в Transcript, и сгенерированный HTML отражает выбор. Проблема появляется только в Firefox и только если значение #testStateListSelection изменено другим сеансом. –

2

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

html form noAutocomplete; with: [ ... 
+1

Отлично. Это работает. Сгенерированный HTML добавляет autocomplete = "off" в форму, и обновленное значение отображается правильно, когда браузер обновляется. Благодарю. –

1

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

window.location.reload(); 

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

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

window.location.reload(true); 

 Смежные вопросы

  • Нет связанных вопросов^_^