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