【问题标题】:Jquery Select Features auto age on Birthday instead of Input Type DateJquery 选择功能在生日时自动年龄而不是输入类型日期
【发布时间】:2015-07-24 05:11:20
【问题描述】:

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

这是我的输入 type="date"

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

【问题讨论】:

  • 虽然你的任务比较小,而且你可能对使用外部库不感兴趣。我正在为那些有类似事情要做的人发表评论,但他们必须在多个地方多次使用。试试这个库:momentjs.com

标签: javascript jquery html


【解决方案1】:

请使用 DEMO。我为您的每个select 添加了class。更详细的解释见内联 cmets!

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

更新 2DEMO

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

})

更新 3DEMO

表单的 HTML 标准似乎是禁用输入 元素不参与表单名称/值集合。

因此,您将无法捕获禁用字段的值,我建议您不要将输入字段设置为 disabled,而是将其设置为 readonly 并为其添加一个类以使其感觉 disabled 具有某些样式添加如下:

CSS

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

【讨论】:

  • 上帝保佑,非常感谢先生。我会将年份添加到 1920 年:D
  • 太棒了!!快乐编码.. :)
  • @truelogicINC.. 用代码中的新计算更新了答案!!检查它!
  • 先生,我有问题
  • jsfiddle.net/deanilvincent/n3yskb4w/5 先生,当我选择 13、17 等时,它说 nAN :(
【解决方案2】:

试试这个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);


        });

【讨论】:

    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多