首页 文章

ASP.NET MVC:jQuery UI DatePicker在AJAX Loaded页面上从Model设置minDate和maxDate

提问于
浏览
0

我有一个弹出的对话框,使用jQuery加载函数加载其内容 . 在那个ajax加载的页面上有一个jQuery UI datepicker,在我传递给视图的Model中,我有MinDate和MaxDate属性,用于设置datepicker的最小和最大日期 . 在非ajax页面上,我通常会这样做:

<script type="text/javascript">
$(function () {
     var model = @(Model.ToJson());

        $('.date').datepicker('option', 'minDate', new Date(parseInt(model.MinDate.substr(6))));
        $('.date').datepicker('option', 'maxDate', new Date(parseInt(model.MaxDate.substr(6))));

});
</script>

问题是,如果我在从jQuery加载函数加载的视图中包含任何javascript,它将被删除并且不会被执行 . 所以,如果我包含上面的代码来指定对话框表单中的datepicker的最小和最大日期不起作用 .

如何指定jQuery UI datepicker的最小和最大日期,其中datepicker是通过ajax加载的,而min和max日期来自模型?

2 回答

  • 3

    您可以将这两个模型属性序列化为DOM中某处的HTML5 data- *属性 . 例如,作为datepicker本身的一部分,它会很棒:

    <input type="text" class="date" name="myDate" data-min="@Model.MinDate" data-max="@Model.MaxDate" />
    

    然后定义一些功能:

    function initPicker() {
        $('.date').each(function() {
            $(this).datepicker('option', 'minDate', $(this).data('min'))
                   .datepicker('option', 'maxDate', $(this).data('max'));
        });
    }
    

    然后在DOM准备中调用此函数:

    $(initPicker);
    

    以及在你的AJAX成功回调中,以便重新附加它们 .

  • 1
    var minshowdate = new Date(@(DateTime.Now.Date.Year), 
                               @(DateTime.Now.Date.Month), 
                               @(DateTime.Now.Date.Day));
    $('#ShowDate').datepicker({ minDate : minshowdate });
    

相关问题