当用户选择月,日和年时,如何使自动计算年龄。我有一个代码,其中它自动计算年龄。但我想要而不是输入。请帮我解决这个问题:(
这是我的输入类型=“日期”
<input type="text" class="form-control" placeholder="Age" disabled id="age" name="age">
这是我的Jquery
$("#dateofbirth").change(function(){
var today = new Date();
var dob = new Date($("#dateofbirth").val());
var age = new Date(today - dob).getFullYear() -1970;
$("#age").val(age);
});
这是JSFIDDLE Working For Input Type="date"
请帮我转换为如下所示选择
<select class="form-control" id="dob-month">
<option value="0">Month</option>
<option value="January">January</option>
...
</select>
<select class="form-control" id="dob-day">
<option value="0">Day</option>
<option value="1">1</option>
...
</select>
<select name="b2byear" class="form-control col-sm-3" id="dob-year">
<option value="0">Year</option>
<option value="2004">2004</option>
<option value="2003">2003</option>
...
</select>
它会在这里自动计算:
<input type="text" class="form-control" placeholder="Age" disabled id="age" name="age">
答案 0 :(得分:3)
您可以使用 DEMO 。我为每个class
添加了select
。有关更详细的说明,请参阅内联注释!
$('.year,.month,.day').on('change',function(){ //call change function on all 3 select dropdowns
var selectedYear=$('.year').find('option:selected').val();//get selected year
var selectedDay=$('.day').find('option:selected').val();//get selected day
var selectedMonth=$('.month').find('option:selected').val(); //get selected month
if(selectedYear!=0 && selectedMonth!=0 && selectedDay!=0) //check if all the 3 dropdown values are selected
{
var today = new Date();
var dob=new Date(selectedDay+"/"+selectedMonth+"/"+selectedYear); //convert to a valid date
var age = new Date(today - dob).getFullYear() -1970; //calculate age
$("#age").val(age);//display it
}
})
<强>更新强>
使用 DEMO 进行少量更改:
$('.year,.month,.day').on('change',function(){
var selectedYear=$('.year').find('option:selected').val();
var selectedDay=$('.day').find('option:selected').val();
var selectedMonth=$('.month').find('option:selected').val();
if(selectedYear!=0 && selectedMonth!=0 && selectedDay!=0)
{
var today = new Date();
var dob=new Date(selectedDay+"/"+selectedMonth+"/"+selectedYear);
var age = today.getFullYear() - dob.getFullYear();//just get it directly here
$("#age").val(age);
}
})
使用 DEMO 更新2
$('.year,.month,.day').on('change',function(){
var selectedYear=$('.year').find('option:selected').val();
var selectedDay=$('.day').find('option:selected').val();
var selectedMonth=$('.month').find('option:selected').val();
if(selectedYear!=0 && selectedMonth!=0 && selectedDay!=0)
{
var today = new Date();
var dob=new Date(selectedYear,(selectedMonth-1),selectedDay); //convert to date in this format
var age = today.getFullYear() - dob.getFullYear();//just get it directly here
$("#age").val(age);
}
})
使用 DEMO 更新3
表单的HTML标准似乎是禁用的输入 元素对表单名称/值集合没有贡献。
所以你不会捕获禁用字段的值,我会建议,而不是使输入字段disabled
使其成为readonly
并为其添加一个类以使其感觉{{ 1}}添加了一些样式,如下所示:
<强> CSS 强>
disabled
答案 1 :(得分:1)
试试这个DEMO FIDDLE
$('#dob-day,#dob-year,#dob-month').on('change',function(){
var today = new Date();
var dob=new Date($('#dob-month').val()+"/"+$('#dob-day').val()+"/"+ $('#dob-year').val());
console.log(dob);
var age = new Date(today - dob).getFullYear() -1970;
$("#age").val(age);
});