在RememberMe的onSubmit登录表单中的javascript超时功能

时间:2013-12-29 21:50:41

标签: javascript function cookies timeout onsubmit

我正在使用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">

它不起作用......它在提交表单之前删除了输入。所以任何人都有了想法?

2 个答案:

答案 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
}