【问题标题】:check if date is lower than date检查日期是否小于日期
【发布时间】:2012-02-24 04:36:35
【问题描述】:

我正在使用 jQuery UI 日期选择器,并且 jquery 验证我的表单...

我想检查您选择的日期是否低于:01-04-1947,如果您选择的日期低于 01-04-1947,那么它应该显示错误消息! 不知道该怎么做——这就是我到目前为止所得到的?

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
    <script type="text/javascript" src="js/jquery-ui-1.8.17.custom.min.js"></script>
    <script type="text/javascript" src="js/jquery.ui.datepicker-da.js"></script>
    <script type="text/javascript" src="js/jquery.validate.min.js" ></script>
    <script>
        $(document).ready(function() {
           //Hide div w/class
           $(".datecontainer").css("display","none");
           // Add onclick handler to checkbox w/class bool
           $(".bool").click(function(){
                // If checked
                if ($("#notificationbox_yes").is(":checked"))
                {
                    //show the hidden div
                    $(".datecontainer").show("fast");
                }
                else
                {
                    //otherwise, hide it
                    $(".datecontainer").hide("fast");
                }
            });


            $(function() {
                $("#datepicker").datepicker(
                    {
                        defaultDate: new Date(35,5,24),
                        minDate: new Date(47, 3,1),
                        /*maxDate: new Date(49,12,31),*/
                        changeMonth: true,
                        changeYear: true,
                        monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'],
                        dayNamesShort: ['Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør', 'Søn'],
                        yearRange: '1901:2012',
                        dateFormat: 'dd-mm-yy'
                    }
                );
                //Parse dato til format
                var endDate = $.datepicker.parseDate('dd-mm-yy', "01-04-1947");
                var date = $.datepicker.parseDate('dd-mm-yy', $('#datepicker').val());
                $.datepicker.parseDate('dd-mm-yy', $('#datepicker').val());
                if (date <= enddate) {
                   alert('error');
                }
            });


            $("#mainForm").validate();

        });

    </script>

【问题讨论】:

  • 为什么不将该日期设置为日期选择器的最早可选日期?

标签: jquery forms validation date


【解决方案1】:

您需要的是一个如下所示的mindate 验证方法:

$.validator.addMethod('mindate',function(v,el,minDate){
    if (this.optional(el)){
        return true;
    }
    var curDate = $(el).datepicker('getDate');
    return minDate <= curDate;
}, 'Please specify a recent date');

然后,在您的验证规则中,指定您的日期选择器输入应该使用它:

$("form").validate({
    rules: {
        datepicker: {
            mindate: new Date(47,3,1),
            required: true
        }
        //the rest of your rules
    }
    //rest of validate options
});

就是这样。在此处查看实际操作:http://jsfiddle.net/ryleyb/uFdu7/

您可能希望在验证选项中定义更好的消息。

【讨论】:

    【解决方案2】:

    正如 Anthony 在评论中所建议的那样,为什么不通过 minDate 项将可能的最低日期指定为可能的最低可选日期?

    minDate: new Date(1947, 4, 1)
    

    如果做不到这一点,您始终可以使用所选值新建一个 Date 实例,并利用其方法来确定输入的有效性(例如 getFullYear() &gt;= 1947 等)。 Here's a reference 帮助您做到这一点。

    【讨论】:

    • 当然可以,但是如果点击,用户仍然可以编辑文本字段,因此用户可以手动更改日期
    猜你喜欢
    • 2023-03-19
    • 2021-07-12
    • 2013-06-08
    • 2012-03-02
    • 2015-01-04
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多