7

我有一个文本字段(在表单中)设置为在焦点上显示 jQuery UI 日期选择器。

使用 PHP(在更新屏幕中),我使用基于此特定记录的先前最终用户输入的日期字符串填充此文本字段的值(当页面加载时)。

我的问题是我使用 minDate 和 maxDate 选项设置了我的日期选择器,这些限制篡改了我的文本字段中显示的原始值。

如果文本字段字符串小于最小值,则将文本字段设置为 minDate 的值。

我需要原始值保持不变,即使它超出日历范围(minDate 或 maxDate 值),除非用户从日历中完成更改。

例子:

minDate: 01-04-2013 (dd-mm-yy)
maxDate: 30-04-2013 (dd-mm-yy)
Original text field value: 16-03-2013 (dd-mm-yy)
Displayed text field value: 01-04-2013 (dd-mm-yy)

这个想法是 minDate 和 maxDate 选项限制最终用户在当前日期的某个定义的时间段内输入/修改数据。

我正在使用 jQuery UI Datepicker 1.8.16 和 jQuery JavaScript 库 v1.6.2。浏览器:Internet Explorer 7 及更高版本、Firefox

4

2 回答 2

1

这是实现它的一种方法。

$(document).ready(function()
{
    var DateLimits = {min:null, max:null};

    DateLimits.min = new Date(Date.parse("01-01-2014"));
    DateLimits.max = new Date(Date.parse("12-31-2014"));

    $( "#datepicker" ).datepicker(
    {
        dateFormat: "mm-dd-yy",
        minDate: DateLimits.min,
        maxDate: DateLimits.max
    });
});

这是小提琴:http: //jsfiddle.net/DEfQL/1/

灵感来自:如何使用字符串为 jQueryUI Datepicker 设置 minDate/maxDate?

于 2014-04-08T15:06:00.780 回答
0

您可以修改“beforeShow”中的选项并在“onClose”中重置它们。像这样:

$('#datepicker').datepicker('option', 'beforeShow', function (date) {
    return {
        'minDate': '+0D',
        'maxDate': '+1Y'
    };
});
$('#datepicker').datepicker('option', 'onClose', function (date) {
    $('#datepicker').datepicker('option', {
        'minDate': null,
        'maxDate': null
    });
});

虽然我不太喜欢我的方法,但我还没有找到任何其他可行的解决方案来解决这个问题。防止 jQuery Datepicker 修改原始值的简单选项会很好。

于 2018-05-03T13:42:50.250 回答