Javascript 不活动后的JQuery关闭模式

Javascript 不活动后的JQuery关闭模式,javascript,jquery,bootstrap-4,bootstrap-modal,Javascript,Jquery,Bootstrap 4,Bootstrap Modal,我正在创建一个触摸屏反馈亭,在用户选择好/坏反馈选项后,它会提示用户输入他们的电子邮件地址 保留他们的电子邮件地址是可选的,因此模式窗口应在x秒不活动后关闭 如果不使用JQuery,如何检测用户当前是否在模式中处于“活动”状态并关闭它 倒计时计时器应复位,并且在以下情况下保持打开状态: 用户开始输入。 如果出现以下情况,应关闭模式: 用户离开时,输入已停用x秒。 我已经完成了一半,只是需要一些帮助。当前,计时器仅在每次单击输入时更改 我现在的代码如下 在我的小提琴上演奏 HTML 非常感谢您的帮

我正在创建一个触摸屏反馈亭,在用户选择好/坏反馈选项后,它会提示用户输入他们的电子邮件地址

保留他们的电子邮件地址是可选的,因此模式窗口应在x秒不活动后关闭

如果不使用JQuery,如何检测用户当前是否在模式中处于“活动”状态并关闭它

倒计时计时器应复位,并且在以下情况下保持打开状态:

用户开始输入。 如果出现以下情况,应关闭模式:

用户离开时,输入已停用x秒。 我已经完成了一半,只是需要一些帮助。当前,计时器仅在每次单击输入时更改

我现在的代码如下

在我的小提琴上演奏

HTML


非常感谢您的帮助。

您可以使用setInterval和所有事件的组合来实现这一点。我已经对下面的代码进行了注释

使现代化 最初,我发布了一个使用键控功能的答案——缺少要求中的触摸屏部分。但是,下面的命令将侦听文本输入的任何更改。让我知道这是否有效

这些事件都是从这个答案中提取出来的

//跟踪用户是否处于活动状态 var-active=true; //记录用户输入后的时间 var timeappeased=0; //每秒钟检查一次 设置间隔函数{ 时间流逝+=1; //范例 $timer.htmlTimeeFassed+非活动秒数; //用户键入后已过一分钟 IftimeAssed==60{ //闭合模态 $'memberNumberModal'.modal'hide'; } }, 1000; //如果用户键入,请重置计时器 $test.在“更改向下键粘贴输入属性更改单击向上键模糊”功能上{ //用户处于活动状态,已键入 时间流逝=0; };
尝试使用下面的javascript代码

$document.readyfunction{ $feedbackFormBad.ontooch开始,单击,函数E{ $'memberNumberModal'.modal'toggle'; var计数器=5; var interval=setIntervalfunction{ 反;; $countdown.html'窗口将在'+counter+'秒后关闭'; 如果计数器==0{ $'memberNumberModal'.modal'hide'; 清晰间隔; } }, 1000; $body.bind'mousedown keydown',functionevent{ 计数器=5; }; }; }; 点击 如果出现以下情况,则应重置计时器:

用户开始输入。 如果出现以下情况,则应关闭模式:

用户离开时,输入已停用x秒。 你好 这里有一些文字

邮寄 不,谢谢
看起来,在一个事件上重置计数器的重复操作可能会起作用,希望它能满足您的要求。如果这样做有效,并且您不希望所有这些事件都发生,那么您可以逐个删除它们,直到找到起作用的事件为止。
<button type="button" class="btn btn-primary" id="feedbackFormBad">click</button>
<div aria-hidden="true" class="modal fade" id="memberNumberModal" role="dialog" tabindex="-1">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      <div class="modal-header modal-header-primary">
        <h1>Hello</h1>
      </div>
      <div align="center" class="modal-body">
        <p>Some text here.</p>
        <p span id="countdown"></p>
        <!-- show count down timer here -->
        <form id="memberNumberForm" class="form-inline">
          <div class="form-group mb-2">
            <input type="text" name="Email" class="form-control" id="memberNumber" placeholder="enter email" required>
          </div>
          <div class="modal-footer">
            <button type="submit" class="btn btn-primary">Send</button>
            <button type="button" class="btn btn-secondary" id="closeModal" data-dismiss="modal">No Thanks</button>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>
$(document).ready(function() {
  $("#feedbackFormBad").on("touchstart, click", function(e) {
    $('#memberNumberModal').modal('toggle');
    var counter = 5;
    var interval = setInterval(function() {
      counter--;
      $("#memberNumber").focus(function() {
        $("#countdown").html('Window will close in ' + counter + ' seconds.');
      });

      if (counter == 0) {
        $('#memberNumberModal').modal('hide');
        clearInterval(interval);
      }
    }, 1000);
  });
});