jQuery - 通过添加类来执行函数?

时间:2011-12-09 13:57:07

标签: jquery asp.net-mvc-2 datepicker

在我的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”类时触发此操作,以便我知道要清除哪些文本框(还有其他文本框用于备注等也包含该字符串,但这些应该是替换。

是否有这样的事件会引发课堂变更? 或者任何其他方式解决这个问题,而我不必复制粘贴在每个页面上? :)

2 个答案:

答案 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