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