javascript - Jquery 选择功能在生日时自动年龄而不是输入类型日期

标签 javascript jquery html

当用户选择年、月、日时,如何自动计算年龄。我有一个自动计算年龄的代码。但我想要的是代替输入。请帮我解决这个问题:(

这是我的输入类型=“日期”

<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">

最佳答案

给你 DEMO 。我为您的每个选择添加了一个。请参阅内联注释以获取更详细的说明!

$('.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);
    }
})

更新 2 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(selectedYear,(selectedMonth-1),selectedDay); //convert to date in this format
        var age = today.getFullYear() - dob.getFullYear();//just get it directly here
        $("#age").val(age);
    }

})

更新 3 DEMO

The HTML standard for forms appears to be such that disabled input elements do not contribute to the form name/value collection.

因此,您将无法捕获禁用字段的值,我建议不要将输入字段设置为禁用,而是使其只读并向其添加一个类添加一些样式使其感觉禁用,如下所示:

CSS

.readoly{
    color:darkgray;
    background-color: rgb(235, 235, 228);
    border:1px solid !important;
}

关于javascript - Jquery 选择功能在生日时自动年龄而不是输入类型日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31602637/

相关文章:

javascript - 在 for 循环 javascript 中生成变量

javascript - 如何滚动加载到 iframe 中的 div

javascript - 提交表单跨度消息更改位置为什么?

javascript - 将当前作用域的 jQuery/plainJS 变量/函数传递给从当前作用域调用的匿名函数

javascript - Kendo UI 图表工具提示和重绘

javascript - Videojs自定义错误代码为401时的错误消息

javascript - 使用 jquery 将键盘焦点设置为具有类 "active"的项目

html - 如何在 Shiny 忙碌并显示加载文本时禁用所有操作按钮

javascript - ES6 React 组件中的 PureRenderMixin

javascript - 如何刷新 jQuery UI 对话框中更改的按钮?