2014-02-17 3 views
0

검색 필터 (텍스트 상자 및 체크 상자)가있는 작은 웹 사이트를 만들려고합니다. 나는 주변을 수색하여 과거 검색 필터를 기억하는 방법은 새로 고친 후에 만 ​​세션 저장 공간을 사용한다는 것을 알았습니다.검색 매개 변수를 기억하고 있습니다.

그러나 문제는 사용자가 웹 사이트를 둘러보고 검색 페이지로 돌아 오더라도 과거 검색 필터를 계속 볼 수 있다는 것입니다. 사용자가 다른 페이지에서 왔을 때 검색 필터를 재설정하고 싶습니다.

사용자가 페이지를 떠난 후 세션 저장소에 저장된 변수를 제거하고 사용자가 새로 고칠 때만이 변수를 유지하는 방법에 대해 생각하고 있습니다.

내 현재 코드는 다음과 같이 진행됩니다

var selectedCompanies = new Array; 
var selectedCategories = new Array; 
var searchWord = ""; 

if(sessionStorage.getItem('selectedCompanies') != null){ 
    selectedCompanies = JSON.parse(sessionStorage.getItem('selectedCompanies')); 
    alert("NOT NULL!"); 
    //loop to recheck checkboxes 
} 
if(sessionStorage.getItem('selectedCategories') != null){ 
    selectedCategories = JSON.parse(sessionStorage.getItem('selectedCategories')); 
    //loop to recheck checkboxes 
} 
if(sessionStorage.getItem('searchWord') != null){ 
    searchWord = sessionStorage.getItem('searchWord'); 
    $('#filter-searchbar').val(searchWord); 
} 

사용자가 검색을 떠난 뒤 내가 세션 스토리지 내부의 변수를 삭제할 수 있습니다 방법으로 도와주세요. 감사!

+0

사용자가 어디에서 왔는지 확인하려면'document.referrer '를 사용하고 미리 정의 된 사이트를 방문했을 때 양식을 재설정하지 말아야합니다. – RononDex

+0

@RononDex 나쁜 생각은 아니지만 모든 브라우저/서버가 referrer 속성을 설정하지는 않습니다. . – War10ck

+0

document.referrer의 문제점은 REFRESH에서 "값"은 현재 페이지가 아닌 사용자가 왔던 마지막 페이지 인 것입니다. – user3286528

답변

0

일반적인 JavaScript 파일에 다음 코드를 추가하십시오. 검색 페이지를 제외한 모든 페이지에이 파일을 참조 :

sessionStorage.removeItem('selectedCompanies'); 
sessionStorage.removeItem('selectedCategories'); 
sessionStorage.removeItem('searchWord'); 

이 다른 모든 페이지에 검색 매개 변수를 삭제하지만, 데이터가 검색 페이지에 유지 할 수 있습니다.

+1

좋은 방법이지만 작동하는지 확실하지 않습니다! 감사! – user3286528

+0

@ user3286528 문제는 없습니다. 그것이 당신을 위해 작동하는 경우 답변으로 표시하는 것을 잊지 마십시오. – War10ck

관련 문제