【发布时间】:2020-04-17 21:32:58
【问题描述】:
如果我的 url 被更改,我想删除 cookie,就好像我不这样做一样;不这样做,某些功能无法正常工作。就像我想要的那样,每当我的页面重新加载意味着它首先打开时,我的下拉列表应该具有默认值。我可以轻松地做到这一点,但主要问题发生在我更改下拉列表的值时,我还希望它应该在下拉列表中具有最后选择的选项。我只想要第一次打开页面时的默认值,或者我更改页面然后返回到我的下拉页面 url。
这是我的 cookie 代码:
// create cookie
function setCookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
//delete cookie
function deleteCookie(name) {
setCookie(name,"",-1);
}
现在我尝试以这种方式取消设置我的 cookie:
if(getCookie("myCookie") !== null && getCookie("myCookie") !== ""){
$('#formA').val(getCookie("myCookie")).trigger('change');
}
else {
goToDefault(); // this onload has the default value "Teacher"
}
$(window).on('beforeunload', function(){
setCookie("myCookie", $('#formA').val(), 12);
});
$(window).on('unload', function() {
if(window.location.pathname !== '/dropdown'){
deleteCookie("myCookie");
}
});
我尝试在$(window).on('beforeunload' 下使用此功能,但没有成功。每当我提交某些内容或重新加载页面时,它总是有效的。我想要的只是这种行为:
这是我的下拉菜单:
Teacher => 默认值选项
学生
书籍
这些是我的 dropdwon 的选项,现在如果我选择 Student 然后处理此选项,我的下拉列表应该只有在我更改它之前的学生值。但是如果我更改页面,然后在该页面上再次输入,我应该会得到默认值Teacher。
我应该如何解决这个问题?
【问题讨论】:
-
试试window.onpopstate
-
如何使用它以及在哪里使用? @Ameer
-
您的可操作任务是仅在 url 更改时从 cookie 中删除值?
-
window.onpopstate = () => { //remove your cookie here },我会根据这个做一个完整的答案。
标签: javascript jquery html cookies