CF7 表单提交成功后永久隐藏 Div,直到缓存或 cookie 被清除

Posted

技术标签:

【中文标题】CF7 表单提交成功后永久隐藏 Div,直到缓存或 cookie 被清除【英文标题】:Hide Div permanently when CF7 form is submitted successfuly until cache or cookies is cleared 【发布时间】:2020-06-03 07:21:48 【问题描述】:

我有这个脚本,当您单击关闭按钮时,它会以 5、10 15 秒的间隔弹出一个 div

var iteration = 0;
var times = [5,10,15]

var showPopUp = function(time) 
    setTimeout(function()  
        jQuery('.pop_timer_box').css('display','flex');
    , time)


showPopUp(times[iteration]);

jQuery('body').on('click', '.cclose_pop', function() 
    jQuery('.pop_timer_box').hide();
    iteration +=1;
    if (iteration < <?=$interval_array_count?>) 
      showPopUp(times[iteration])
    
);

div里面是一个联系表单7,下面的代码在表单提交的时候隐藏了这个div

document.addEventListener( 'wpcf7mailsent', function( event ) 
    if(event.detail.contactFormId == '10917') 
    jQuery('.pop_timer_box').hide();
    
, false ); 

我的问题是如何做到这一点,以便当我提交表单并且成功时弹出表单将不再出现,除非缓存或 cookie 或本地存储被清除

【问题讨论】:

我认为在客户端是不可能的。您可以通过使用节点将 id 存储在文件或数据库中来从服务器端执行此操作。 你可以尝试通过 localStorage.setItem('showpopup', 'yes');然后当表单提交成功时,将相同的值更新为“否”,然后在你的函数中第一次检查 localStorage 值 但是如果 localStorage 被清除然后它会再次显示 【参考方案1】:

function setCookie(cname,cvalue,exdays) 
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires=" + d.toGMTString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
	

function getCookie(cname) 
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i < ca.length; i++) 
    var c = ca[i];
    while (c.charAt(0) == ' ') 
      c = c.substring(1);
    
    if (c.indexOf(name) == 0) 
      return c.substring(name.length, c.length);
    
  
  return "";

function showNewsletterPopUp()
	$(window).scroll(function() 
	   if($(window).scrollTop() > 100) 
	    $('.popup').fadeIn(300);	
	   

	);
	jQuery(function($) 
	    $('.parallax').on('scroll', function() 
	    	if($(".parallax").scrollTop() > 100) 
		    	$('.popup').fadeIn(300);	
			
	    )
	);
	$('.pop_close').click(function()
    	$('.popup').addClass('hide_this');
    );   

function checkCookie() 
	
	//console.log('hgghhggh');
  var user = getCookie("popup-attribute");

  if(typeof user === "undefined" || user == null || user == '')
	  console.log('HERE');
      showNewsletterPopUp();
      setCookie("popup-attribute", 'enable', 7);
  

checkCookie();

【讨论】:

以上是关于CF7 表单提交成功后永久隐藏 Div,直到缓存或 cookie 被清除的主要内容,如果未能解决你的问题,请参考以下文章

停止提交表单,直到在 ajax 中打开模式

如何在单击 CF7 提交按钮时在弹出窗口中显示 grecaptcha?

表单提交成功后如何在 div 中创建成功消息?

成功提交表单后如何在div中创建成功消息?

单击表单按钮后,隐藏按钮 div 并显示隐藏的 div

在联系表单 7 上隐藏验证错误或成功消息框