简体   繁体   中英

How to get age based on month/day/year dropdown in FireFox

I am trying to get the age of users based on the month date and year field they enter in the dropdown. This is working in Chrome and other browsers but in Firefox I get an Invalid Date Error:

 jQuery('#cons_birth_date_YEAR,#cons_birth_date_MONTH,#cons_birth_date_DAY').on('change',function(){ var selectedYear=$('#cons_birth_date_YEAR').find('option:selected').val(); var selectedDay=$('#cons_birth_date_DAY').find('option:selected').val(); var selectedMonth=$('#cons_birth_date_MONTH').find('option:selected').val(); if(selectedYear!=0 && selectedMonth!=0 && selectedDay!=0) { var today = new Date(); var dob=new Date(selectedDay+"/"+selectedMonth+"/"+selectedYear); console.log(dob); var age = new Date(today - dob).getFullYear() -1970; $("#age").val(age); } if (age < 13) { alert('under 13'); } }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <fieldset> <legend> <span class="aural-only cons_dob"></span> <span class="input-label survey-question-label cons_dob">Date of Birth:</span> </legend> <span class="input-container"> <span id="cons_birth_date_date" title="Date:"> <select name="cons_birth_date_MONTH" id="cons_birth_date_MONTH" title="Month"> <option value="0">Month </option> <option value="1" selected="selected">Jan</option> <option value="2">Feb</option> <option value="3">Mar</option> <option value="4">Apr</option> <option value="5">May</option> <option value="6">Jun</option> <option value="7">Jul</option> <option value="8">Aug</option> <option value="9">Sep</option> <option value="10">Oct</option> <option value="11">Nov</option> <option value="12">Dec</option> </select> <select name="cons_birth_date_DAY" id="cons_birth_date_DAY" title="Day"> <option value="0">Day </option> <option value="1">1</option> <option value="2" selected="selected">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> <select name="cons_birth_date_YEAR" id="cons_birth_date_YEAR" title="Year"> <option value="0">Year </option> <option value="1997" selected="selected">1997</option> <option value="1998">1998</option> <option value="1999">1999</option> <option value="2000">2000</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> <option value="2018">2018</option> <option value="2019">2019</option> </select> </span> </span> </fieldset> 

This script adds an alert if a user is under 13 years of age. This works in Chrome but in Firefox, the line below is returning the error: Invalid Date

var dob=new Date(selectedDay+"/"+selectedMonth+"/"+selectedYear);

Try with this:

 var dateSTR = "2019-07-02";
 var dob = new Date(dateSTR.replace(/-/g,"/"));

You can read this and check the crossbrowsing problems.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM