在ASP.NET MVC中验证有效日期的字符串

时间:2015-12-17 08:24:13

标签: jquery asp.net-mvc

我有什么:

HTML:

<div class="row">
    <div class="col-sm-4">
        @Html.LabelFor(model => model.EndDate, "End Date", new { @class = "control-label" })
    </div>
    <div class="col-sm-8">
        @Html.TextBoxFor(model => model.EndDate)
    </div>
</div>
<button class="btn btn-primary" type="submit">Save</button>

JavaScript的:

$(function () {

    $("#EndDate").datepicker(@if (Model.EndDate != DateTime.MinValue) {
                                     <text>{ defaultDate: new Date('@Model.EndDate') }</text>
                                 });
    @if (Model.EndDate != DateTime.MinValue) {
        <text> $("#EndDate").val('@Model.EndDate.ToShortDateString()'); </text>
    }
    @if (Model.EndDate == DateTime.MinValue) {
        <text> $("#EndDate").attr('disabled', 'true'); </text>
    }
}

因此文本框绑定到日期选择器,用户可以选择手动编辑日期。 我正在研究一种验证输入文本框的日期的方法。

例如,用户可以输入85426525455这不是有效日期,在这种情况下,我想在单击“保存”按钮时显示一个vlaidation消息。

我尝试添加一个无效的onClose事件:

$("#EndDate").datepicker({
       onClose:function(dateText, inst) {
           try {
               $("#EndDate").datepicker.parseDate('dd/mm/yy', dateText);
           } catch (e) {
               alert(e);
           } 
       }
});

任何线索!

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以这样使用$.datepicker.parseDate()方法:

$("#EndDate").datepicker({
  dateFormat: 'dd/mm/yy',
  onClose: function(dateText, inst) {
    try {
      $.datepicker.parseDate('dd/mm/yy', dateText);
    } catch (e) {
      alert(e);
    }
  }
});
<link href="https://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<input id='EndDate'>

或者只是不允许用户使用readonly属性手动输入日期。

$("#EndDate").datepicker({
  dateFormat: 'dd/mm/yy'
});
<link href="https://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<input id='EndDate' readonly>