我正在使用javascript在我的登录表单中存储cookie(记住我复选框)我希望如果用户检查box = cookies保存,并且如果他取消选中它=删除了cookie(如果它们被保存则为ofc) 。这应该在用户提交表单(登录)时发生。它适用于例如我放了一些按钮所以当我点击它时,cookie被删除。 这是我的表格:
<form name="login-form" class="login-form" action="login_exec.php" onSubmit="if(this.checker.checked) toMem(this)" method="post">
这些是我的js函数:
function toMem(a) {
newCookie('theUsername', document.forms["login-form"]["username"].value);
newCookie('thePassword', document.forms["login-form"]["password"].value);
}
function delMem(a) {
eraseCookie('theUsername');
eraseCookie('thePassword');
document.forms["login-form"]["username"].value = '';
document.forms["login-form"]["password"].value = '';
}
好的,我试着这样做:
<form name="login-form" class="login-form" action="login_exec.php" onSubmit="if(this.checker.checked) {toMem(this)} else setTimeout(delMem(this), 3000)" method="post">
它不起作用......它在提交表单之前删除了输入。所以任何人都有了想法?
答案 0 :(得分:0)
“this”,在setTimeout内部引用窗口对象。此外,setTimeout期望传递一个函数,而不是一个调用。
最好在这里使用听众,但我认为这应该有用......
onSubmit =“var that = this; if(this.checker.checked){toMem(this)} else setTimeout(function(){delMem(that)},3000)”
答案 1 :(得分:0)
function toMem(a) {
newCookie('theUsername', document.forms["login-form"]["username"].value);
newCookie('thePassword', document.forms["login-form"]["password"].value);
}
function delMem(a) {
eraseCookie('theUsername');
eraseCookie('thePassword');
//document.forms["login-form"]["username"].value = ''; i commented this out because
//document.forms["login-form"]["password"].value = ''; you dont want to delete the values if a user unchecks remember me
}