Javascript 正在验证日期选择器中的日期

Javascript 正在验证日期选择器中的日期,javascript,jquery,asp.net-mvc,jquery-ui,datepicker,Javascript,Jquery,Asp.net Mvc,Jquery Ui,Datepicker,我有两个约会选择者: $(".From").datepicker({ dateFormat: 'dd/mm/yy', numberOfMonths: 1, autoclose: true, onClose: function(selectedDate) { $(".To").datepicker("option", "minDate", selectedDate); }}); $(".To").datepicker({ dateFormat: 'dd/mm/yy', numberOf

我有两个约会选择者:

$(".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:我应该使用正则表达式吗?

下面是一个工作示例

型号

[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)
别忘了


当您试图键入错误日期时,将显示一条验证错误消息。

模型、视图、图标。。等等,你用的是哪种框架?你能解释一下你说“它失败了”是什么意思吗?到底发生了什么?你期望发生什么?此外,您似乎没有任何要验证的验证规则。@Jasen它不是在验证用户输入的日期。例如:2014年11月13日,因为第13个月不存在。预期输出:“请输入有效日期”-作为错误消息,必须添加到验证规则中。我应该使用数据注释吗?好的,您需要使用一些东西,并且带有ValidationMessageFor helper的数据注释是验证输入的一个很好的内置工具。您可能需要使用
DateTime
数据类型才能工作。您现在拥有的将以编程方式限制选项,但不会显式验证输入。另一个选项是阻止直接键盘输入,因此只有通过datepicker小部件才能获得可用的值——应该是有效的日期。它对我不起作用——这会引发一个错误:该字段必须是日期。所以我使用了数据类型字符串。当用户输入2014年11月13日“To”字段设置为2020年6月24日时,它对我不起作用。对有效日期引发错误,因为:字段必须是日期-这不正确。我以前尝试过这个,并改为数据类型stringI我想我们需要使用类似的东西。。var validator=$(“#From”).validate();validator.rors({“From”:“请输入有效日期”});看来你有问题了。如果改为使用
dateFormat:'mm/dd/yy'
这可能会起作用。不过,最好指定一种不同的格式——链接文章对此进行了详细解释。是的,它接受mm/dd/yy格式。但是我们需要dd/mm/yy格式。为了克服该错误,将其更改为字符串。
jquery.validate.js
jquery.validate.unobtrusive.js