0

试图从一种形式验证年龄,我在 chrome 的控制台上发现了这个问题。这是我的代码:

<script type="text/javascript">
     function CalAge() {

     var dd = $("#day").val();
     var mm = $("#month").val();
     var yy = $("#year").val();
     var age = 18;

     var mydate = new Date();
     mydate.setFullYear(yy, mm-1, dd);

     var currdate = new Date();
     currdate.setFullYear(currdate.getFullYear() - age);

     if(dd !=0 || mm !=0 || yy !=0){ //whether one or all values havent been choosen
         if ((currdate - mydate) < 18){
            window.location = "http://www.google.com";
         }
         else{
            alert("more than 18");
        }
     }
     else{
         alert("please register");

     }
   }
</script>

我想知道这是否与我的代码有关,因为如果我将 url 重定位放在代码中的其他位置(例如在条件之上),它就可以正常工作。任何建议

4

2 回答 2

0

这是因为if ((currdate - mydate) < 18)没有评估为真。

在您的示例中,currdate是 18 岁的截止日期。你的情况应该是:

if (currdate < mydate) { ... }

也就是说,如果有人在截止日期之后出生(即小于 18 岁),则重定向到 Google。

于 2013-07-01T21:02:54.957 回答
-1

这是对错误的一个很好的解释......我认为你必须window.location用这样的东西替换:window.location.assign("http://www.google.com")并且只使用一个else来提醒你所有的弹出窗口!如果可选...祝你好运!哎呀!使用这个:`function CalAge() {

     var dd = $("#day").val();
     var mm = $("#month").val();
     var yy = $("#year").val();
     var age = 18;

     var mydate = new Date();
     mydate.setFullYear(yy, mm-1, dd);

     var currdate = new Date();
     currdate.setFullYear(currdate.getFullYear() - age);

     if(dd !=0 || mm !=0 || yy !=0){ //whether one or all values havent been choosen

     var subit = currdate - mydate;
         if (subit < 18){
            window.location.href = "http://www.google.com";
         }
         else{
            alert("more than 18");
        }
     }
     else{
         alert("please register");

     }
   }
</script>`
     thanks good luck
于 2013-07-01T20:57:14.393 回答