在日期选择器中验证日期

Posted

技术标签:

【中文标题】在日期选择器中验证日期【英文标题】:validating date in the datepicker 【发布时间】:2015-01-29 17:28:44 【问题描述】:

我有两个日期选择器:

$(".From").datepicker(
dateFormat: 'dd/mm/yy',
numberOfMonths: 1,
autoclose: true,
onClose: function(selectedDate) 
    $(".To").datepicker("option", "minDate", selectedDate);
);


$(".To").datepicker(
dateFormat: 'dd/mm/yy',
numberOfMonths: 1,
autoclose: true,
onClose: function(selectedDate) 
    $(".From").datepicker("option", "maxDate", selectedDate);
);

查看:

 @html.TextBoxFor(model => model.From, new  @class = "form-control From" )
 @Html.TextBoxFor(model => model.To, new  @class = "form-control To" )

型号:

    [Display(Name = "From")]
    public string From  get; set; 

    [Display(Name = "To")]
    public string To  get; set; 

当用户手动输入日期时,会失败。

有没有办法让用户输入日期并进行验证?

选项 1:我应该使用正则表达式吗?

【问题讨论】:

Model、View、Con..等等,你用的是哪个框架..? 你能解释一下你说“它失败了”是什么意思吗?究竟会发生什么,您期望会发生什么?此外,您似乎没有任何验证规则可供验证。 @Jasen 它没有验证用户输入的日期。例如:2014 年 11 月 13 日,因为第 13 个月不存在。预期输出:“请输入有效日期” - 作为必须添加到验证规则的错误消息。我应该使用数据注释吗? 嗯,你需要使用 something 和 Data Annotations with ValidationMessageFor helper 是一个很好的内置工具来验证输入。您可能需要使用 DateTime 数据类型才能使其工作。您现在所拥有的将以编程方式限制选项,但不会显式验证输入。另一种选择是防止直接键盘输入,因此唯一可用的值是通过 datepicker 小部件——应该是 valid 日期。 【参考方案1】:

这是一个工作示例

型号

[DisplayFormat(DataFormatString = "0:dd/MM/yyyy", ApplyFormatInEditMode=true)]
[DisplayName(Name = "From")]
public DateTime? From  get; set;   // note the data type

查看

@Html.TextBoxFor(model => model.From, new  @class = "form-control From" )
@Html.ValidationMessageFor(model => model.From)

别忘了load the validation scripts。

jquery.validate.js
jquery.validate.unobtrusive.js 

当您尝试输入错误的日期时,这会给您一条验证错误消息。

【讨论】:

它对我不起作用-引发错误:该字段必须是日期。所以我使用了数据类型字符串。当用户输入 2014 年 11 月 13 日时,“收件人”字段设置为 24/06/2020 它对我不起作用。为有效日期引发错误:字段必须是日期 - 这是不正确的。我之前尝试过并更改为数据类型字符串 我想我们需要使用这样的东西.. var validator = $( "#From" ).validate(); validator.showErrors( "From": "请输入有效日期" ); 您似乎遇到了date culture format 问题。如果您改用dateFormat: 'mm/dd/yy',这可能会起作用。但是,最好指定一种不同的格式——链接的帖子对此进行了详细解释。 是的,它接受格式 mm/dd/yy。但我们需要 dd/mm/yy 格式。为了克服该错误,将其更改为字符串。

以上是关于在日期选择器中验证日期的主要内容,如果未能解决你的问题,请参考以下文章

不能在另一个日期选择器中更改日期选择器参数?

更改后,日期选择器验证不起作用-BootStrap

引导验证器和日期时间选择器冲突

在引导日期选择器中启用特定日期

如何在引导日期选择器中突出显示特定日期?

如何限制用户从日期选择器中选择过去的日期?