如何验证日期选择器以禁止/拒绝某些日期?

Posted

技术标签:

【中文标题】如何验证日期选择器以禁止/拒绝某些日期?【英文标题】:How to validate datepicker to forbid/reject certain dates? 【发布时间】:2011-02-28 18:08:39 【问题描述】:

我正在使用这个日历控件。用户可以从日历中选择任何日期。我需要验证周六和周日以及 1/1 和 1/25 等日期。如果他们选择了这些日子,我需要向他们显示一条弹出消息(如果它不是有效日期)。

【问题讨论】:

“如何验证”是一个非常糟糕的问题标题。请改进它。 将标题更改为更具体的“” 【参考方案1】:

试试这个:

$("input[id^='Date-<%=Model.ID%>']").change(function() 
    var date = new Date($(this).val()).getDay();
    if(date == 0 || date == 6) 
        alert('weekend');
    
);

这是通过change 事件设置的。您的活动可能会有所不同。

得到输入的值:$(this).val()

从中创建一个新的Date 对象:new Date($(this).val())

然后获取日期编号:.getDay(),它返回一个从 0 到 6 的值,其中 0 是星期日,6 是星期六。

那么你只需测试 0 或 6。

现场示例: http://jsfiddle.net/UwcLf/


编辑:感谢 Nick Craver,如果您不需要为周末选择运行备用代码,您可以禁用特定日期。

来自尼克的链接答案:Disable specific days of the week on jQuery UI datepicker

$("input[id^='Date-<%=Model.ID%>']").datepicker(
    beforeShowDay: function(date) 
        var day = date.getDay();
        return [(day != 0 && day != 6)];
    
)​​​​​;​

更新示例: http://jsfiddle.net/UwcLf/1/

添加了禁用天的数组: http://jsfiddle.net/UwcLf/3/

【讨论】:

+1 - 我会将其与在日期选择器本身中禁用它们结合起来,请随时在您的答案中包含此代码:***.com/questions/2968414/#2973696 @Nick - 谢谢,我将包含您的代码。对您的链接答案 +1。 :o) 谢谢尼克,但是如何验证每年的 1/1 和 1/25? @Nick - 谢谢。我对那个的吸收有点慢!在我的答案中发布了一个类似的版本,然后看到你已经有了一个。 :o)【参考方案2】:

如果您使用的是 JQUery UI DatePicker,它有一个 onSelect 事件,您可以使用它来验证所选日期。

我不知道您的后端,或者您是否正在使用后端,但您始终可以通过 Ajax 调用将所选日期发送到您的服务器并确定它是否有效。

如果您使用的是 ASP.Net,请查看 Custom Validators。

【讨论】:

以上是关于如何验证日期选择器以禁止/拒绝某些日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置日期选择器以单独显示 1910-2010 之间的年份

如何更改引导内联日期选择器以适应全宽

添加日期选择器以编程方式查看?

日期选择器验证 WPF

将图表数据绑定到日期选择器以显示自定义时间线

格式化日期选择器以发布到 MySQL DB