如何根据FireFox中的月/日/年下拉列表获取年龄

时间:2019-07-02 17:01:40

标签: javascript jquery

我正在尝试根据用户在下拉菜单中输入的月份日期和年份字段来确定他们的年龄。这在 Chrome 和其他浏览器中有效,但在 Firefox 中,我收到了无效的日期错误:

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>

如果用户未满13岁,此脚本将添加警报。这在Chrome中有效,但在Firefox中,以下行返回错误:无效日期

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

1 个答案:

答案 0 :(得分:1)

尝试一下:

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

您可以read this并检查跨浏览问题。