如果用户正在撰写

时间:2017-01-19 07:59:11

标签: javascript html

如果用户在订阅输入中写入,我想在我的网站上禁用弹出窗口。弹出窗口已经设置好了。这是我的代码:



setTimeout(function() {
  $(document).ready(function() {

    $("#enquirypopup").modal();

  })
}, 10000);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
  <input type="text" class="required_email" style="color: #ffffff;" name="email" id="email" placeholder="EMAIL TO RECEIVE LIFE-TIME PREMIUM ACCESS">

</div>
<div class="row">
  <button class="btn btn-info btn-lg button" type="submit" id="butt" data-toggle="modal" data-target="#enquirypopup">SUBSCRIBE</button>
</div>
&#13;
&#13;
&#13;

我该如何管理?如果用户正在打字,可能会打破计时器?

谢谢!

3 个答案:

答案 0 :(得分:1)

首先,在# Function to make the grouped pattern groupPat <- function(pat0, ng) { # pat0: original list of patterns # ng: number of original patterns in one group # pat1: new, grouped pattern # Length of original pattern np0 <- length(pat0) # Length of pattern to make np1 <- floor(np0/ng) if (np1 > 0){ # Allocate memory pat1 <- vector(mode = "list", length = np1) # Make new pattern for (i in 1:np1-1){ pat1[i] <- paste0("\\b", pat0[(i*ng+1):((i+1)*ng)], "\\b", collapse = "|") } pat1[np1] <- paste0("\\b", pat0[(np1*ng+1):np0], "\\b", collapse = "|") } else { pat1 <- paste0("\\b", pat0, "\\b", collapse = "|") } # Output pat1 } # The actual replacement loop: pat <- groupPat(lastname, 100) for (i in 1:length(pat)){ x <- gsub(x, pattern = pat[i], replacement = "LASTNAME") } 的回调中调用$(document).ready是没有意义的。特别是如果定时器设置得这么长时间 - 到10秒,几乎总能保证DOM准备就绪。

最简单的方法

据我了解,如果用户已输入电子邮件,您希望中止计时器。要做到这一点,你需要做的就是使用setTimeout函数来停止先前设置的计时器。

clearTimeout
$(function(){ // This is a shortcut for $(document).ready()
  var showModal = function() {
    // $('#enquirypopup').modal();
    alert('I am a fake modal. Please, do as I tell and fill the e-mail box.');
  };
  
  var showModalTimer = setTimeout(showModal, 5000); // Show modal after 5 seconds
  
  $('#email').on('keypress', function() { // Cancel the modal if user already typed something
    clearTimeout(showModalTimer);
  });
});

我不建议在向用户显示弹出窗口后自动关闭弹出窗口,因为它会让人感到困惑。如果您已经展示了某些内容,请让用户自行关闭它。

答案 1 :(得分:0)

因此,最简单的方法可能就是记录上次按键输入的时间。这是一个样本:

ssh -i "somekey.pem" username@hostname 'bash -i -c "~/zookeeper-3.4.6/bin/zkServer.sh start"'

然后在你的模态弹出部分:

var lastTypedTime = new Date().getTime();
myInput.onkeydown = function() {
    lastTypedTime = new Date().getTime();
}

如果您想知道,var timeToAvoidModal = 5000; setTimeout(function() { if (new Date().getTime() - lastTypedTime > timeToAvoidModal) { $('#enquiryPopup').modal(); } }, 10000); 会创建一个new Date()对象,并且在Date对象上调用getTime()会提供Unix时间戳或者数量自Unix时代以来经过的毫秒数,即1970年1月1日00:00:00。

答案 2 :(得分:-1)

在您的输入上使用add_filter( 'gform_input_mask_script', 'set_mask_script', 10, 4 ); function set_mask_script( $script, $form_id, $field_id, $mask ) { $script = "jQuery('#input_{$form_id}_{$field_id}').mask('" . esc_js( $mask ) . "',{placeholder:' '}).bind('keypress', function(e){if(e.which == 13){jQuery(this).blur();} } );"; return $script; } 事件:

focus

每次焦点位于输入字段时,都会禁用弹出窗口。您可能希望在用户键入后禁用弹出窗口。这可以通过

来实现
$("#email").on("focus", function () {
  $("#yourpopup").css("display", "none");
});