jquery中的问题单击“确定”按钮时

时间:2015-08-28 05:19:55

标签: javascript jquery

我有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秒后。如果用户不按任何任何按钮(确定/取消),则应将其重定向到登录页面。 现在的问题是,当显示弹出窗口并单击确定按钮时,它不会将其重定向到登录页面...请帮我解决代码中的问题!!!

6 个答案:

答案 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元素。 将脚本位置更改为之前。

&#13;
&#13;
<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;
&#13;
&#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">