1

我有两个用于日期范围选择的日期选择器,它与 jquery UI 演示页面上的演示相同,但​​是,当用户实际手动删除日期字段值时,我需要将另一个日期字段重置为最初的样子。我尝试编写下面的代码,但出于某种奇怪的原因,每当我在from日历中选择一个日期时,它都会显示在该to字段中,并且 minDate/maxDate 设置似乎根本不起作用。

$( "#dt_from" ).blur(function(){
        if($(this).val()=="")
        {
            $( "#dt_to" ).datepicker( "option", "minDate", "+0" );
        }
    }).datepicker({
        defaultDate: "+0d",
        showOn: "button",
        buttonImage: "images/Cal.gif",
        buttonImageOnly: true,
        minDate:+0,
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) {
            $( "#dt_to" ).datepicker( "option", "minDate", selectedDate );
        }
    });
    $( "#dt_to" ).blur(function(){
        if($(this).val()=="")
        {
            $( "#dt_from" ).datepicker( "option", "maxDate", "" );
        }
    }).datepicker({
        defaultDate: "+0d",
        showOn: "button",
        buttonImage: "images/Cal.gif",
        buttonImageOnly: true,
        minDate:+0,
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) {
            $( "#dt_from" ).datepicker( "option", "maxDate", selectedDate );
        }
    });

我相信模糊事件以某种方式导致了这种混乱,但我不知道如何解决它。

4

1 回答 1

1

啊,感谢这里的另一篇文章如何清除/重置 jQuery UI Datepicker 日历上的选定日期?我想出了如何解决这个问题。我在这里发布代码以供将来参考。

$( "#dt_from" ).prop("readonly",true).datepicker({
        defaultDate: "+0d",
        showOn: "button",
        buttonImage: "images/Cal.gif",
        buttonImageOnly: true,
        minDate:+0,
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) {
            if(selectedDate!="")
            {
                $( "#dt_to" ).datepicker( "option", "minDate", selectedDate );
            }
        }
    }).keyup(function(e) {
        if(e.keyCode == 8 || e.keyCode == 46) {
            $.datepicker._clearDate(this);
            $( "#dt_to" ).datepicker( "option", "minDate", "today" );
        }
    });
    $( "#dt_to" ).prop("readonly",true).datepicker({
        defaultDate: "+0d",
        showOn: "button",
        buttonImage: "images/Cal.gif",
        buttonImageOnly: true,
        minDate:+0,
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) {
            if(selectedDate!="")
            {
                $( "#dt_from" ).datepicker( "option", "maxDate", selectedDate );
            }
        }
    }).keyup(function(e) {
        if(e.keyCode == 8 || e.keyCode == 46) {
            $.datepicker._clearDate(this);
            $( "#dt_from" ).datepicker( "option", "maxDate", "" );
        }
    });

为了安全起见,我将字段设置为只读,然后在 del/bkspace 键检查中重置选项。

于 2013-02-21T05:51:38.780 回答