jquery 检查日期选择器的年份

jquery Check the year of a datepicker

本文关键字:选择器 检查 日期 jquery      更新时间:2023-09-26

>我在表单中使用来自jqueryui的日期选择器。现在我想验证出生年份。这意味着我的用户不能输入高于 1998 年的年份(他/她必须年满 18 岁)。如何检查该值是否不高于 1998?这就是我到目前为止所做的。

<input type="text" id="birthyear" required><br />

$(function(){
    $('#birthyear').datepicker({
        minDate: new Date(1900,1-1,1),
        defaultDate: new Date(1991,1-1,1),
        changeYear: true,
        yearRange: '-110:-18'
    });
});
您可以使用

getDate从日期选取器获取Date对象:

var date = $("#birthyear").datepicker("getDate");

从那里你可以得到年份:

var year = date.getFullYear();
如果要确保用户至少年满 18

岁,则可能不仅要检查年份:还需要确保今天的日期是他们 18 岁生日之后。

我可以看到几种方法可以实现这一点

  1. 设置最大截止日期,以防止任何人选择超过您确定的日期

    $('#birthyear').datepicker({
        minDate: new Date(1900,1-1,1),
        defaultDate: new Date(1991,1-1,1),
        changeYear: true,
        yearRange: '-110:-18',
        maxDate: new Date(1997, 11, 31)
    });
    
  2. 初始化时将验证函数绑定到 onChangeMonthYear 事件

    $('#birthyear').datepicker({
        minDate: new Date(1900,1-1,1),
        defaultDate: new Date(1991,1-1,1),
        changeYear: true,
        yearRange: '-110:-18',
        onChangeMonthYear: function(year) {
            if (year > 1998)
                ; // alert user of error
        }
    });
    
  3. 有点棘手,但如果你已经有一些客户端验证函数,你可以像这样获取Date对象:

    $('#birthyear').datepicker('getDate').getFullYear()
    

希望有帮助

我看到其他一些答案正在向您展示如何确认年份,但几年过去了。我对一个项目也有类似的要求,需要验证用户的年龄而不是硬编码一年,虽然你要求检查年份(但括号中有年龄要求),我会建议一个更动态和可维护的解决方案如下。

    //Initialize datepicker
         $(function() {
                $( "#dob" ).datepicker({
                    changeMonth: true,//allow month select
                    changeYear: true,//allow year select
                    yearRange: "-100:+0",//set range of year select
                    dateFormat: 'MM dd, yy',//set format of "displayed element"
                    altField: "#hidden-dob",//set alt field "hidden element"
                    altFormat: "yy/mm/dd",//set format for hidden element
                    onClose: function() {
                        $('#hidden-age').val(getUserAge($('#hidden-dob').val()));
                    }
                });
            });
    //year/month/day
//Pass the date to retrieve the users age FORMAT <yy/mm/dd> "The function that you need"
            function getUserAge(dateString) {
                var today = new Date();
                var dob = new Date(dateString);
                var age = today.getFullYear() - dob.getFullYear();
                var month = today.getMonth() - dob.getMonth();
                if (month < 0 || (month === 0 && today.getDate() < dob.getDate())) {
                    age--;
                }
                return age;
            }