在我的MVC 2应用程序中,我有许多视图,包含许多很多输入字段。其中很多都包含DateTime变量。
我正在使用datepicker jQuery插件来帮助用户选择日期。这也允许我在我的MasterPage中执行以下操作:
$(document).delegate(".hasDatepicker", "keyup", function () {
this.value = this.value.replace(/[^0-9\.\/]/g, '');
});
这是为了消除用户使用不正确的字符,如果他们喜欢键入。由于Datepicker将自己的类添加到datepicker-elements,因此我无法使用该类自动清理输入。 这里没有问题,这是应该工作的部分。
但问题是,当我打开编辑视图时,文本框中填充了“21/05/2012 0:00:00”。一旦开始使用Datepicker插件,它就会变为仅应对日期。 要从文本框中删除时间部分,我正在考虑这样做:
$(".hasDatepicker").each( function() {
$(this).val($this.val().replace(" 0:00:00",""));
});
在我看来,这是最简单的解决方案。
但是我必须将它添加到每个页面,我想知道是否有办法制作一个.delegate()版本。
的内容$(document).delegate(".hasDatepicker", SOME_EVENT, function () {
$(this).val($this.val().replace(" 0:00:00",""));
});
问题是,SOME_EVENT应该是什么?我希望在添加“hasDatepicker”类时触发此操作,以便我知道要清除哪些文本框(还有其他文本框用于备注等也包含该字符串,但这些应该不是替换。
是否有这样的事件会引发课堂变更? 或者任何其他方式解决这个问题,而我不必复制粘贴在每个页面上? :)
答案 0 :(得分:1)
为什么在jQuery datepicker具有使用dateFormat选项执行此操作的内置功能时,使用这种复杂的方式编辑日期格式:
来自jquery ui docs:
解析和显示日期的格式。此属性是其中之一 区域化属性。有关可能的完整列表 格式见formatDate函数。
代码示例
Initialize a datepicker with the dateFormat option specified. $( ".selector" ).datepicker({ dateFormat: 'yy-mm-dd' }); Get or set the dateFormat option, after init. //getter var dateFormat = $( ".selector" ).datepicker( "option", "dateFormat" ); //setter $( ".selector" ).datepicker( "option", "dateFormat", 'yy-mm-dd' );
答案 1 :(得分:0)
我建议您在服务器上使用格式,因此时间部分不会填充到文本框中。例如:new DateTime().ToShortDateString()
或为此创建特殊格式。
您可以像here
那样使用EditorFor