2011-02-01 8 views
5

안녕하세요 (이것은 Seaside 메일 링리스트의 복사본입니다. 먼저 stackoverflow에서 시도하십시오) 드롭의 렌더링 된 디스플레이를 얻는 방법 Firefox에서 다른 세션의 업데이트 된 선택 사항을 표시하는 다운 목록을 선택 하시겠습니까? (3.6.13을 사용하고 있습니다)태그를 사용하는 경우

이 문제는 Chrome, IE 또는 Opera에는 표시되지 않습니다.

다음은 시나리오입니다. 속성이있는 도메인 개체가 드롭 다운 목록에 있습니다. 다른 세션에서 속성을 업데이트합니다. 디스플레이를 새로 고치지 만 렌더링 된 선택 사항은 변경되지 않습니다. Firebug를 사용하면 생성 된 html이 업데이트 된 선택 사항을 표시합니다. 이것은 기본적인 HTML 지식 일 수 있지만 표시된 값이 변경되어 'selected'옵션이 변경된 것을 나타내지 않아야합니까? 아니면 초기 페이지 표시에서만 설정되고 사용자 동작에 의해서만 설정되도록 의도 된 값입니까?

예 : 해변 변수 세션 변수에서 #testStateListSelection이라는 클래스 변수가있는 데모가있는 'Seaside'구성 요소가 있습니다. 다른 Seaside 세션에서 값을 '3'으로 변경하면 생성 된 HTML의 'selected'에 '3'이 표시 되어도 원래 세션에서 표시된 값이 다시 렌더링 된 후 '1'로 유지됩니다.


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="5">five</option>
</select>

<option value="1">one</option>
<option value="2">two</option>
<option value="3" selected="selected">three</option>
<option value="4">four</option>
어떻게 '세'를 표시하는 값을 선택 드롭 다운을받을 수 있나요?

는 BTW : 모든 나는 HTML & 브라우저의 행동에 대해 내가 해변을 코딩에서 배운 알고, 그래서 왜곡 된 관점 ;-) 어떤 도움

감사가있을 수 있습니다.

+0

당신이 "다시 렌더링 후"말할 때 ..., 사용을 다시 렌더링하는 선택 요소를 강제로) 그 페이지? – Gareth

+0

그냥 새로 고침 ... F5 또는 "현재 페이지 새로 고침"버튼 –

답변

8

문제는 페이지를 새로 고치면 브라우저가 이전에 어떤 옵션이 선택되었는지 기억하고 있다는 것입니다. 이 기능은 긴 양식 중에 양식 데이터를 잃어 버리기가 더 어려워지기 위해 조금만 논의했습니다. Mozillazine forums

페이지를 새로 고치는 대신. 주소 표시 줄에 가서 반환을 눌러 "신선한"페이지를로드하는 경우, 당신은 다시 서버에서로드 페이지를 얻을 수 있습니다 - 페이지 self class testStateListSelection이 실행되는 접근을 갱신 될 때마다 업데이트 select

+0

이것은 나를 미치게했습니다. 이 답변을 주셔서 감사합니다. –

+0

사용자가 주소 표시 줄에서 명시 적으로 다시로드하도록 요청하지 않고 브라우저가 선택한 값을 기반으로 디스플레이를 업데이트하도록 강제 할 수 있는지 궁금 할 것입니다. – mathieu

1

와 함께.

실제로 제공하는 코드는 완벽하게 작동합니다. 접근 자들이 예상대로 작동하는지 확신합니까?

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

페이지를 새로 자바 스크립트를 사용하는 경우

window.location.reload(); 

을 : 당신은 또한하지 자동 완성 비공식 속성으로 폼 태그를 알려 시도 할 수 있습니다 선택 요소. 새로운 HTML 소스에 관계없이 동적 값을 유지합니다. 다른 페이지로 탐색 브라우저를 가지고, 아니면 그냥 F5 또는 동급 (갱신 한 -

window.location.reload(true); 
관련 문제