2

我想要一种将日期选择器添加到我所有日期时间文本框的快速方法

我正在使用剃须刀,它创建了我的文本框,如下所示

<input type="datetime"... />

我可以用什么 jquery 函数来找到这些?

我尝试过

$(document).ready(function () {
    this.filter('input:datetime').each(function () {
        $(this).datepicker();
    });
});

但我使用最新版本的 jquery 得到“不支持属性过滤器”

谢谢

编辑:添加模式代码

选项1:

public Nullable<System.DateTime?> ShippedDate { get; set; }

选项2

Public DateTime _ShippedDate = DateTime.Now;
public Nullable<System.DateTime> ShippedDate { 
    get { return _ShippedDate ; }
    set { _ShippedDate = value; }
}
4

2 回答 2

7

$('input[type=datetime]').datepicker()应该为你工作。

jsFiddle 示例

于 2013-08-13T14:37:32.090 回答
1

您可以制作这样的编辑器模板,将您的所有日期时间放入日期选择器中。

@model DateTime
@Html.TextBox("", Model.ToShortDateString(), new {type = "datetime", @class = "datepicker"})
<script type="text/javascript">
  $(function () {
    $(".datepicker").datepicker({});
  });
});
</script>

如果你这样做,那么所有绑定到 DateTime 对象的文本框都将自动进入日期选择器。

您只需将其放入 /Views/Shared/EditorTemplates 并将其命名为 DateTime.cshtml

编辑1:

这是初始化日期时间属性的方法,以便您可以确定它在传递时不为空。在您的模型中,您可以像这样声明它:

private DateTime _suppliedDate = DateTime.Now;
public DateTime SuppliedDate
{
  get { return _suppliedDate; }
  set { _suppliedDate = value; }
}

通过这种方式,日期被初始化,您仍然可以通过 SuppliedDate 属性访问它。如果您对此有任何疑问,请告诉我。

编辑2:

我相信一些额外的谷歌搜索已经解决了我认为的问题。在原始编辑器模板中,您应该能够将@model DateTime 更改为@model DateTime?

问号使变量成为可为空的 DateTime 而不是正常的 DateTime。如果您打算将 Date 字段保留为 null,那么您应该忽略我发布的初始化程序并添加问号。如果您不想让 DateTime 为空,那么您应该使用初始化程序并且不要添加问号。

如果您有任何问题,请告诉我。

于 2013-08-13T14:42:31.393 回答