0

1 つのフォームから年齢を検証しようとすると、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)が true と評価されていないためです。

あなたの例でcurrdateは、18 歳のカットオフ日です。あなたの状態は次のとおりです。

if (currdate < mydate) { ... }

つまり、誰かがカットオフ日以降に生まれた場合 (つまり、18 歳未満)、Google にリダイレクトされます。

于 2013-07-01T21:02:54.957 に答える
-1

これはエラーに対する適切な説明です... を次のwindow.locationようなものに置き換える必要があると思います:window.location.assign("http://www.google.com")また、1 つだけを使用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 に答える