我没有使用jquery.ui的datepicker,因为我需要选择多个日期,所以我在EditorTemplate中使用Keith Wood's datepicker作为我的Date字段:
@model Nullable<DateTime>
@{
string name = ViewData.TemplateInfo.HtmlFieldPrefix;
string id = name.Replace(".", "_");
string dt = Model.HasValue ? String.Format("{0:d}",(string)Model.Value.ToShortDateString()) : string.Empty;
}
@Html.Hidden("", dt, new { @class = "datefield", @type = "date", @id = id, style = "display:none;" })
<script type="text/javascript">
$(document).ready(function () {
$('#@id').datepick({
renderer: $.datepick.themeRollerRenderer,
multiSelect: 31,
onSelect: function (dates) {
var value = '';
for (var i = 0; i < dates.length; i++) {
value += (i == 0 ? '' : ',') + $.datepick.formatDate(dates[i]);
}
$('#@name').val(value)
var form = $(this).parents().find('form')[0];
// form.validate(); // this causes error (Object doesn't support property or method 'validate') whats up with that?
}
});
});
</script>
以下是我的数据类中DateTime字段的定义,我的ViewModel继承了该字段:
[Required]
[DataType(DataType.Date)]
public Nullable<DateTime> StartDate { get; set; }
这是客户端验证snip-it,它返回无效状态:
form.validate({
rules:{
StartDate: {
required: true
,dpDate: true
}
},
messages: {
StartDate: 'Please choose at least one date'
}
});
if (form.valid()) { // never reached }
所以现在我正在最后确定这个内联日期选择器的最后一点验证。如您所见,我有一个由datepicker填充的隐藏字段,它包含有效日期,但逗号分隔,并且不会转换为日期时间。当我选择一个日期时它是有效的。是否存在用于将分隔数据验证为类型的通用解决方案?
我基本上使用多个日期循环数据库调用,但仍想验证分隔数据的类型是DateTime。
此致
布兰登
答案 0 :(得分:0)
jQuery插件需要一个jQuery对象。
如果您的表单ID是 myForm ,您可以使用以下插件:
$('#myForm').validate({ ... });
$('#myForm').valid();