我有wriiten jquery和html css,如下面的代码行
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
resetTimer();
document.onkeypress = resetTimer;
document.onmouseover = resetTimer;
function logout() {
var t1 = setTimeout(reallyLogout, 60000);
$(".popup-form").css("display", "block");
}
var t;
function resetTimer() {
clearTimeout(t);
t = setTimeout(logout, 60000); // Logout in 10 minutes
}
function reallyLogout() {
debugger
$(".popup-form").css("display", "none");
location.href = '../login/login.aspx';
}
function cancel() {
clearTimeout(t1);
resetTimer();
$(".popup-form").css("display", "none");
}
});
</script>
<style type="text/css">
.popup-form {
display:inline-block;
padding:40px;
background-color:white;
border:1px solid black;
position:fixed;
left:40%;
top:35%;
display:none;
z-index:99999999999999999;
}
</style>
<body>
<div class="popup-form">
<div class="popup-inner-form">
<h4>Confirm</h4>
You will be logged out after 60 seconds
<input id="okbtn" value="Ok" type="submit" onclick="return reallyLogout();" />
<input id="cancelbtn" value="Cancel" type="submit" onclick="return cancel();" />
</div>
</div>
</body>
我创建了自定义表单... 当用户空闲60秒时显示。实际上我们的主要目的是在显示弹出窗口60秒后。如果用户不按任何任何按钮(确定/取消),则应将其重定向到登录页面。 现在的问题是,当显示弹出窗口并单击确定按钮时,它不会将其重定向到登录页面...请帮我解决代码中的问题!!!
答案 0 :(得分:1)
首先,由于您正在使用即时执行的函数,因此您应将jQuery
作为参数传递,以使其在函数范围内处于活动状态。
(function ($) {
- &gt; })(jQuery);
您应该在即时函数范围内附加事件onclick,以便访问reallyLogout
函数,因为您无法访问即时函数调用范围之外的函数,因为它只在此范围内执行一次..
t1
应在函数的全局范围内声明,以便您可以在任何嵌套函数调用var t1;
这是一个有效的例子..我已经把时间花了4秒
(function ($) {
resetTimer();
var t1; // set this in global scope
document.onkeypress = resetTimer;
document.onmouseover = resetTimer;
function logout() {
t1 = setTimeout(reallyLogout, 4000);
$(".popup-form").css("display", "block");
}
var t;
function resetTimer() {
clearTimeout(t);
t = setTimeout(logout, 4000); // Logout in 10 minutes
}
function reallyLogout() {
// debugger
console.log($(".popup-form"));
$(".popup-form").css("display", "none");
location.href = '../login/login.aspx';
}
function cancel() {
clearTimeout(t1);
resetTimer();
$(".popup-form").css("display", "none");
}
$("#okbtn").click(function(){reallyLogout();});
$("#cancelbtn").click(function(){cancel();});
})(jQuery);
.popup-form {
display:inline-block;
padding:10px;
background-color:white;
border:1px solid black;
position:fixed;
left:10%;
top:35%;
display:none;
z-index:99999999999999999;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div class="popup-form">
<div class="popup-inner-form">
<h4>Confirm</h4>
You will be logged out after 60 seconds
<input id="okbtn" value="Ok" type="submit" />
<input id="cancelbtn" value="Cancel" type="submit" />
</div>
</div>
</body>
答案 1 :(得分:1)
使用文件内部定义的功能,从块中取出。创建作为全球需要从中获取的功能。请参阅以下代码段。我修改了 reallyLogout 和取消功能,因为它需要从外部访问。
JS:
$(function () {
resetTimer();
document.onkeypress = resetTimer;
document.onmouseover = resetTimer;
var t1;
function logout() {
t1 = setTimeout(reallyLogout, 60000);
$(".popup-form").css("display", "block");
}
var t;
function resetTimer() {
clearTimeout(t);
t = setTimeout(logout, 60000); // Logout in 10 minutes
}
//declared the reallyLogout as a global function
reallyLogout= function () {
debugger
$(".popup-form").css("display", "none");
location.href = '../login/login.aspx';
};
cancel= function () {
clearTimeout(t1);
resetTimer();
$(".popup-form").css("display", "none");
}
});
答案 2 :(得分:0)
当您的脚本运行时,不会加载dom元素。 将脚本位置更改为之前。
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<style type="text/css">
.popup-form {
display:inline-block;
padding:40px;
background-color:white;
border:1px solid black;
position:fixed;
left:40%;
top:35%;
display:none;
z-index:99999999999999999;
}
</style>
<body>
<div class="popup-form">
<div class="popup-inner-form">
<h4>Confirm</h4>
You will be logged out after 60 seconds
<input id="okbtn" value="Ok" type="submit" onclick="return reallyLogout();" />
<input id="cancelbtn" value="Cancel" type="submit" onclick="return cancel();" />
</div>
</div>
<script type="text/javascript">
// your script
</script>
</body>
&#13;
答案 3 :(得分:0)
在onclick =&#34中删除return;返回reallyLogout();&#34; &安培;&安培; onclick =&#34; return cancel();&#34;并且还切断了realLogout()&amp;&amp; cancel()实现并粘贴到$(function(){});
之外如果你正在使用$(&#34;#okbtn&#34;)。点击(function(){});然后你可以在$(function(){})中使用它;并且在这种情况下,删除HTML中的onclick函数。
如果你按照你的结构进行微小的更改,那么在$(function(){})中将该函数声明为全局;即reallyLogout = function(){//要执行的操作//};
答案 4 :(得分:0)
您应该为以下方法添加括号:
t = setTimeout(logout(), 60000); // Logout in 10 minutes
var t1 = setTimeout(reallyLogout(), 60000);
然后,它会起作用。另外,我已经测试过了。
答案 5 :(得分:-1)
尝试使用
<input type="button">
而不是
<input type="submit">