입력 값을 캐시 / 보존하지 않도록 브라우저에 알리는 페이지 만들기


116

대부분의 브라우저는 양식 입력 값을 캐시합니다. 따라서 사용자가 페이지를 새로 고치면 입력 값이 동일합니다.

여기 내 문제가 있습니다. 사용자가 저장을 클릭 하면 서버는 POST 된 데이터 (예 : 확인 된 제품)의 유효성을 검사하고 유효하지 않은 경우 브라우저로 다시 보냅니다. 그러나 위에서 언급했듯이 서버가 일부 값에 대한 선택을 취소하더라도 브라우저 캐시로 인해 여전히 선택 될 수 있습니다!

내 데이터에는 보이지 않는 (상위 항목이 선택 될 때까지) 확인란이 있으므로 사용자는 저장을 다시 클릭 하고 오류 메시지가 표시 될 때까지 일부 이전 값이 여전히 선택되어 있다는 사실을 알지 못할 수 있습니다 . 짜증나 네요.

이것은 Ctrl+ 를 수행하여 해결할 수 F5있지만 해결책은 아닙니다. 일부 양식 / 페이지에서 양식 입력 데이터를 캐시하지 않도록 브라우저에 알리는 자동 / 프로그래밍 방식이 있습니까?


1
당신을 <form autocomplete="off"...위한 옵션입니까? 이 문제가 모든 브라우저에서 발생합니까, 아니면 특정 브라우저에서 발생합니까?
David Kolar

드롭 다운 <select>목록 을 참조하여이 질문에 답할 수있는 방법이 있습니까? 목록이 있고 selected선택 항목 을 정의 했지만 페이지를 새로 고치면 이전에 선택한 옵션이 유지됩니다.
Martin

나는 반대를 달성하고 싶다-뒤로 버튼에서 각 페이지의 입력 값을 유지하십시오 (두 번 클릭하면 그에 따라 입력을 가져옵니다). 많은 JS 코드를 사용하는 것과 관련된 다양한 예제가 있지만 (IMHO는 실제로 작동하지 않습니다)-더 간단한 방법이 있습니까? 양식 및 입력 필드 모두에서 autocomplete = "on"을 시도했지만 작동하지 않습니다. 브라우저는 Chrome입니다.
Dmitry z

답변:


197

값을 명시 적으로 공백으로 설정하고 있습니까? 예를 들면 :

<input type="text" name="textfield" value="">

그러면 브라우저가 데이터를 저장해서는 안되는 곳에 데이터를 넣는 것을 막을 수 있습니다. 또는 autocomplete양식 태그에 속성을 추가 할 수 있습니다 .

<form autocomplete="off" ...></form>

1
체크 박스에 대해 이야기하기 때문에 값을 ""로 설정할 수 없습니다. 그리고 자동 완성 해제는 "드롭 다운 자동 완성 목록의 경우"뿐만 아니라 "사용자가 F5를 누를 때"양식 입력 값을 저장하지 않음을 의미합니까?
queen3 2010-04-23

2
developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion 에 따르면 autcompletion = off는 적어도 Gecko에서 "세션 기록 캐싱"에 영향을줍니다. 내가 필요한 것을 위해 작동하는지 테스트 할 것입니다.
queen3 2010-04-23

1
@ queen3 : 예, "선택하지 않음"이라고 명시 적으로 말할 수있는 방법이 없기 때문에 확인란이 문제입니다. 여전히 문제가있는 경우 시도해 checked="false"볼 수 있으며 일부 브라우저에서 작동 할 수 있습니다. 또 다른 대안은 Javascript / jQuery를 사용하여 페이지로드시 모든 확인란을 명시 적으로 해제하는 것입니다.
DisgruntledGoat

1
@ queen3, 당신은 "자동 완성 해제 ="없습니다 "자동 완성 해제 ="을 의미
매트 베이커

2
모든 답변과 제안이 저에게 효과가 없었습니다. 크롬을 사용하고 develeoping .NET
하칸

45

에서 스택 오버플 참조

브라우저가 이미 값을 저장 한 경우 value = ""로 작동하지 않았으므로 추가해야합니다.

입력 태그의 경우 설정할 수있는 자동 완성 속성이 있습니다.

<input type="text" autocomplete="off" />

양식에도 자동 완성을 사용할 수 있습니다.


9
Chrome에서는 속성이 명시 적으로 공백으로 설정되어 autocomplete="off"있어도 개별 양식 요소에서 사용할 때 아무런 영향을 미치지 않는 것처럼 보이며 헤더 value를 보내는 동안 Cache-Control: Must-Revalidate아무런 효과가 없었습니다. Chrome에서이 동작을 억제 autocomplete="off"하기 위해 <form>요소 자체에 속성 을 적용해야했습니다 .
mindplay.dk jul.

나는 양식에 autocomplete = "off"를했지만 그것은 나를 위해 작동하지 않았다
Kingsley Simon

브라우저와 같은 @KingsleySimon에 대한 더 많은 정보가 필요합니다. 브라우저에 올바른 동작을 방해하는 설정이있을 수 있습니다
shareef

1
브라우저의 동작이 변경된 것 같습니다 : developer.mozilla.org/en-US/docs/Web/Security/…
david

그리고 html 유효한 형식에 유의하십시오. 예를 들어 다른 내부의 aform이 아님
shareef

10

또 다른 접근 방식은 HTML의 양식 바로 뒤에 JavaScript를 사용하여 양식을 재설정하는 것입니다.

<form id="myForm">
  <input type="text" value="" name="myTextInput" />
</form>

<script type="text/javascript">
  document.getElementById("myForm").reset();
</script>

8

기본적으로 캐시를 지우는 방법에는 두 가지가 있습니다.

<form autocomplete="off"></form>

또는

$('#Textfiledid').attr('autocomplete', 'off');

6

이것은 최신 브라우저에서 나를 위해 일했습니다.

autocomplete="new-password"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.