2011-01-06 4 views
2

많은 필드가 URL에 전달 된 변수로 채워지는 양식의 페이지가 있습니다. 해당 필드는 사용할 수 없으며 (비 편집 가능) 사용자 만 볼 수 있습니다.뒤로 버튼을 사용할 때 IE에 "잊어 버린"정보가 입력되었습니다.

나머지 필드는 사용자 입력이 필요하며 비활성화되지 않습니다 (편집 가능). 양식이 제출되면 확인 페이지가 나타납니다. 사용자가 NON-EDITABLE 정보가 양식간에 동일하면 양식을 여러 개 제출해야하므로 확인 페이지에서 양식 페이지로 돌아갈 수 있으므로 많은 시간을 절약 할 수 있습니다.

내가 작동하게하는 방식은 사용자가 뒤로 버튼을 누르면 NON-EDITABLE 필드가 모두 채워지지만 EDITABLE 필드는 비어 있습니다. 이것이 파이어 폭스가하는 일이지만, IE8은 EDITABLE 필드에 입력 된 것을 "잊지"않는다.

캐시를 사용하지 않으려면 다음과 같이 페이지 시작 부분과 페이지 끝 부분에 나타납니다.

<head> 
    <meta http-equiv="Pragma" content="no-cache"/> 
    <meta http-equiv="Cache-Control" content="no-store"/> 
<head/> 

뒤로 버튼을 눌렀을 때 편집 가능한 입력란에 입력 한 내용을 잊어 버리게하려면 어떻게해야합니까?

내 페이지는 모두 중요한 경우 PHP로 생성됩니다.

편집 :

이 내가하지에 말했다 경우에도 내 페이지를 캐시 IE의 문제가 나에게 나타납니다. 내 meta 태그가 맞습니까? IE에서 내 페이지를 캐싱하지 못하게하려면 다른 작업을 수행해야합니까?

답변

1

에 입력 기본을 가질 수 이쪽으로.

<input type="hidden" id="refreshed" value="no"/> 
    <script type="text/javascript"> 

     onload=function(){ 
      var e=document.getElementById("refreshed"); 
      if(e.value=="no"){ 
       e.value="yes"; 
      } 

      else{ 
       e.value="no"; 
       location.reload(); 
      } 

     } 

    </script> 

UPDATE :

위의 솔루션은 IE에서 일하지만 난 그게 파이어 폭스에서 잘 작동하지 않았다 발견했다. 상황을 더 자세히 살펴본 결과, 마침내 SO 문제가 해결되었습니다. 아래는 더 나은 해결책입니다. DOCTYPE 헤더 위에 올려주십시오. 자세한 내용은 here.

<?php 
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
?> 
2

autocomplete='off' 속성을 양식 필드에 추가해 보았습니까?

예를 들면 이런 식으로 뭔가 :

단지 대신 그들을 뒤로 버튼을 누르 만들기의 형태로 다시 리디렉션을하지 왜
<input type='text' name='myfield' size='10' autocomplete='off'> 
+0

작동하지 않으며 자동 완성 기능을 해제하고 싶지 않습니다. 그것은 IE가 여전히 페이지를 캐싱하고있는 것처럼 보입니다. ( – ubiquibacon

0

(폼에 다시 리드하는 "추가 입력"라는 링크가) ?

페이지가로드 당신은 내가이 코드를 발견하고 내가 원하는 것을 할 것 같다 빈 값

예를

<input type="textbox" name="somename" value=""> 
+0

나는 그것을 가지고 있지만, 뒤로 버튼을 누르는 사용자를 고려할 필요가 있습니다. 뒤로 버튼, 나는 그들을 막을 수 없다). – ubiquibacon

+0

사실, 당신은 onbeforeunload 이벤트를 캡처하고 더 많은 데이터를 입력하고 싶다면 사용자에게 질문 할 수 있습니다. 그렇다면 폼 페이지에 window.location을 수행하십시오. –

관련 문제