在日期选择器中验证日期
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 格式。为了克服该错误,将其更改为字符串。以上是关于在日期选择器中验证日期的主要内容,如果未能解决你的问题,请参考以下文章