3

DOB コードから多くの Age Validation を見てきましたが、自分のコードで動作するように見えるものはありません。

基本的に、私の TAFE コースでは、名、姓、電子メール アドレス、連絡先電話番号、生年月日、興味のある分野 (児童図書と成人図書のドロップダウン ボックス) を記入したフォームを作成する必要があります。

生年月日が正しい形式であることを確認する必要があります。私はこれを成功させました.30日の月と閏年にも相当します.

次の部分では、送信時に対象者の年齢が 18 歳以上であることを検証するために、[対象地域] ドロップダウン ボックスが必要です。選択した関心領域が成人向けの本である場合のみ。

さて、簡単なことをして、1996 年以降のすべての年齢が拒否されるようにすることもできますが、入力された生年月日からこれを行う検証を作成したいと思います。

DOB は DD/MM/YYYY の形式で入力します。

これは私がこれまでに持っているものです:

<script language="JavaScript" type="text/javascript">
function validateForm()
{
    *snipped firstname, surname, email validation*
    var dob = document.getElementById("dateofbirth").value;
    *snipped dob validation*
    var area = document.getElementById("areaofinterest").value;
    if (area == "")
    {
        alert("Please select an Area of Interest!");
        return false;
    }
    var now = new Date();
    var birthdate = dob.split("/");
    var born = new Date(dob[2], dob[0], dob[1] * 1 - 1);
    var age = Math.floor((now.getTime() - born.getTime()) / (365.25 * 24 * 60 * 60 * 1000));
    if (area == "adults" && age<18)
    {
        alert("You need to be 18 years of age and older for the Adults books!");
        return false;
    }
return true;
}
</script>

私は JavaScript の初心者にすぎないため、このコードには明らかに間違っている部分がある可能性があります。しかし、基本的に書かれていることは、私が達成したいことです。

Adults Books Area of​​ Interest が選択されている場合、生年月日が 18 歳以上かどうかを確認します。

HTML は、私が持っているものの下に表示されます。

<form method="post" name="form1" onsubmit="return validateForm()" action="">
    Fields marked with * are required to be filled out!
    <br />
    First Name*: 
    <input type="text" id="firstname" name="First Name" placeholder="e.g. John" />
    <br />
    Surname*:
    <input type="text" id="surname" name="Surname" placeholder="e.g. Smith" />
    <br />
    Email address*:
    <input type="text" id="emailaddress" name="Email Address" placeholder="e.g. john.smith@example.com" />
    <br />
    Contact phone number:
    <input type="text" id="phonenumber" name="Contact Phone Number" placeholder="e.g. 0410 224 567" />
    <br />
    Date of Birth*:
    <input type="text" id="dateofbirth" name="Date of Birth" placeholder="DD/MM/YYYY" />
    <br />
    Area of Interest*:
    <select id="areaofinterest" name="Area Of Interest" />
    <option value="">Select interest</option>
    <option value="children">Books for children</option>
    <option value="adults">Books for adults</option>
    </select>
    <br />
    <input type="submit" value="Submit" /><input type="reset" value="Reset" />
</form>

フィードバックをいただければ幸いです。これがすでに回答されている場合は申し訳ありません。私はそれが持っていることを知っていますが、私の目的のためにそれを機能させることはできません。単純なフォーマットの間違いを犯したか、何かを忘れた可能性があります。それはおそらく非常に明白なことです。

4

4 に答える 4

0

1 年あたりの平均ミリ秒数を差し引くのではなく、その人が今年誕生日を迎えたかどうかを調べてみてください (これはタイムゾーンによって異なります)。次に、現在の年から生年月日を引き、その人が今年誕生日を迎えていない場合は 1 を引いて年齢を求めます。何かのようなもの:

function age(born, now) {
  var birthday = new Date(now.getFullYear(), born.getMonth(), born.getDate());
  if (now >= birthday) 
    return now.getFullYear() - born.getFullYear();
  else
    return now.getFullYear() - born.getFullYear() - 1;
}
于 2013-05-31T06:33:29.667 に答える