Javascript 年龄验证-关闭对话框窗口

Javascript 年龄验证-关闭对话框窗口,javascript,jquery-ui,verification,gate,Javascript,Jquery Ui,Verification,Gate,使用Nation Builder作为客户站点的平台,需要创建一个年龄门。我会在一个单独的页面上进行年龄验证,但显然它在这个平台上不起作用,所以我使用Jquery对话框显示在主页顶部。我得到的代码验证了age的有效性,但需要对其进行调整,以关闭小部件UI,而不是url重定向 我不是编程专家,所以任何帮助都将不胜感激。这里有一个链接。 干杯 var ageCheck={ //设置最小年龄和重定向到的位置 最低年龄:13岁, userIsOldEnoughPage:“http://www.bullyp

使用Nation Builder作为客户站点的平台,需要创建一个年龄门。我会在一个单独的页面上进行年龄验证,但显然它在这个平台上不起作用,所以我使用Jquery对话框显示在主页顶部。我得到的代码验证了age的有效性,但需要对其进行调整,以关闭小部件UI,而不是url重定向

我不是编程专家,所以任何帮助都将不胜感激。这里有一个链接。 干杯

var ageCheck={
//设置最小年龄和重定向到的位置
最低年龄:13岁,
userIsOldEnoughPage:“http://www.bullyproject.com",
USERNOTLENOUGHPAGE:“http://www.pacerkidsagainstbullying.org/#/home",
//请别管这些东西:)
开始:函数(){
this.setUsersBithDay();
if(this.userIsOverMinimumAge()){
this.setCookie(“usersBirthday”,this.usersBirthday,30);
window.location=this.userIsOldEnoughPage;
}否则{
这不是最小值();
};
}, 
usersBirthday:新日期(),
setTheMonth:function(){
var selectedMonth=document.getElementById(“月”).value;
如果(选择的月份==“1”){
本节为第29节;
} 
否则如果(已选择每月==“3”||
选择的月份==“5”|
selectedMonth==“8”||
选择的月份==“10”){
本节为星期一(30);
}
否则{
本条第31条;
};
},
setDaysForMonth:函数(x){
var daySelectTag=document.getElementsByName('day')[0];
daySelectTag.options.length=0;

对于(var i=1;i我认为您正在寻找.close方法-在用户按下按钮提交其年龄后,您将如何使用它:

$('#dialog-modal').dialog('close'); //hides modal, shows content behind
有关jQuery UI对话框的更多文档:


编辑:以下是更新start()方法的方法:

还有一个jsiddle演示:


编辑#2-(回答OP关于检查每页cookie的问题)

检查cookie的代码中有一些错误。我已经更新了JSFIDLE,下面是错误的快速版本:

1) 首先检查cookie,而不是当前始终显示对话框的代码。如下所示:

$(function() {
    window.ageCheck.checkCookie();
});
2) 更新checkCookie()方法以在必要时显示对话框:

checkCookie:   function () {
  var usersBirthday=this.getCookie("usersBirthday");
  if (!usersBirthday) {
     // unknown age - show dialog.
     $( "#dialog-modal" ).dialog({modal: true});
     return;
  }
  this.usersBirthday = new Date(usersBirthday);
  if (this.userIsOverMinimumAge()) {
     $('#dialog-modal').hide();
     // user is > 13, don't show dialog.
 } else {
    // user is < 13, redirect to another page.
    this.notMinimumAge(); 
 }
}
checkCookie:函数(){
var usersBirthday=this.getCookie(“usersBirthday”);
如果(!usersBirthday){
//未知年龄-显示对话框。
$(“#对话框模式”).dialog({modal:true});
返回;
}
this.usersBirthday=新日期(usersBirthday);
if(this.userIsOverMinimumAge()){
$(“#对话框模式”).hide();
//用户>13,不显示对话框。
}否则{
//用户<13,重定向到另一页。
这不是最小值();
}
}
3) getCookie方法中有一个错误,因为返回的是“usersBirthday”,而不是生日本身。修复方法如下:

getCookie: function (c_name) {
  var i,x,y,ARRcookies=document.cookie.split(";");
  for (i=0;i<ARRcookies.length;i++)
  {
    //split on '=', then check cookie
    x=ARRcookies[i].split('=');
    if (x[0]===c_name){
      return unescape(x[1]);
    }
  }
},
getCookie:函数(c_名称){
变量i,x,y,ARRcookies=document.cookie.split(“;”);

对于(i=0;ii,如果您使用属性“modal:true”创建对话框,用户必须关闭对话框才能访问站点。如果您想让他们输入年龄,则这将是正确的解决方案,并处理对话框本身的可能性。他仍然必须将其设置为模式对话框,以确保必须首先处理该对话框,并移除对话框顶部的关闭按钮避免有人只是关闭它并访问页面。谢谢,是的-在他的链接中,OP已经在使用
$(“#dialog modal”).dialog({modal:true});
来创建对话框-也许他/她已经更新了它?嗯,javascript仍然必须更改,因为它正在指定url而不是关闭模式对话框UI。它需要:a)检查年龄b)如果年龄:关闭模态对话框c)显示您拥有的内容
window.location=this.userIsOldEnoughPage;
我相信您可以使用上面的代码来关闭对话框。如果它们<13,您可能仍然希望像重定向一样重定向。编辑:但是,是的,您需要将此HTML和JS移动到您正在使用的实际页面上走开。@DonMcCurdy谢谢你的帮助,我相信应该可以。在主页上测试一下。如果你没有回音,那就成功了!
checkCookie:   function () {
  var usersBirthday=this.getCookie("usersBirthday");
  if (!usersBirthday) {
     // unknown age - show dialog.
     $( "#dialog-modal" ).dialog({modal: true});
     return;
  }
  this.usersBirthday = new Date(usersBirthday);
  if (this.userIsOverMinimumAge()) {
     $('#dialog-modal').hide();
     // user is > 13, don't show dialog.
 } else {
    // user is < 13, redirect to another page.
    this.notMinimumAge(); 
 }
}
getCookie: function (c_name) {
  var i,x,y,ARRcookies=document.cookie.split(";");
  for (i=0;i<ARRcookies.length;i++)
  {
    //split on '=', then check cookie
    x=ARRcookies[i].split('=');
    if (x[0]===c_name){
      return unescape(x[1]);
    }
  }
},