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

jQuery-通过添加类来执行函数?,jquery,asp.net-mvc-2,datepicker,Jquery,Asp.net Mvc 2,Datepicker,在我的MVC2应用程序中,我有很多视图和很多很多输入字段。其中相当多包含DateTime变量 我使用datepicker jQuery插件帮助用户选择日期。这还允许我在母版页中执行以下操作: $(document).delegate(".hasDatepicker", "keyup", function () { this.value = this.value.replace(/[^0-9\.\/]/g, ''); }); 这是为了避免用户使用不正确的字符,如果他们喜欢

在我的MVC2应用程序中,我有很多视图和很多很多输入字段。其中相当多包含DateTime变量

我使用datepicker jQuery插件帮助用户选择日期。这还允许我在母版页中执行以下操作:

$(document).delegate(".hasDatepicker", "keyup", function () {
            this.value = this.value.replace(/[^0-9\.\/]/g, '');
});
这是为了避免用户使用不正确的字符,如果他们喜欢键入。由于Datepicker向Datepicker元素添加了自己的类,所以我能够使用该类自动清理输入。 这里没有问题,这是它应该工作的部分

但问题是,当我打开编辑视图时,文本框中会填充“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",""));
});
问题是,某个事件应该是什么?我希望在添加“hasDatepicker”类时触发此操作,以便我知道要清除哪些文本框(还有其他用于备注等的文本框也包含该字符串,但这些文本框不应被替换)

是否有这样的事件会在类更改时触发?
或者其他方法来解决这个问题,而不必复制粘贴到每一页?:)

我建议您在服务器上使用格式,这样时间部分就不会填充到文本框中。例如:
new DateTime().ToShortDateString()
或为此创建特殊格式


您可以像前面描述的那样使用
EditorFor
,我建议您在服务器上使用格式,这样时间部分就不会填充到文本框中。例如:
new DateTime().ToShortDateString()
或为此创建特殊格式


您可以像前面描述的那样使用
EditorFor
当jQuery datepicker具有内置功能时,为什么要使用这种复杂的方式来编辑日期格式,只需使用dateFormat选项即可:

对于jquery ui文档:

解析和显示日期的格式。此属性是其中之一 区域化属性。获取所有可能的 格式请参见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' );

当jQuery datepicker具有内置功能时,为什么要使用这种复杂的方式来编辑日期格式?只需使用dateFormat选项即可:

对于jquery ui文档:

解析和显示日期的格式。此属性是其中之一 区域化属性。获取所有可能的 格式请参见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' );

如果这是一个愚蠢的问题,很抱歉,但是如果使用“Html.TextBoxFor(x=>x.StartDate,…”,这是否有效?问题是我没有填充文本框,MVC为我这样做:),实体框架持有StartDate变量,因此,如果我必须手工操作,我将不得不向我的模型中添加变量,并从那里手动添加和检索它们?使用
Html.EditorFor(x=>x.StartDate,…)
并为
DateTime
创建一个自定义的EditorTemplate(如我回答中的链接中所述)。如果这是一个愚蠢的问题,对不起,但是如果使用“Html.TextBoxFor”,这是否有效(x=>x.StartDate,…?问题是我没有填充文本框,MVC是为我做的:)实体框架持有StartDate变量,所以如果我必须手动操作,我必须将变量添加到模型中,并从那里手动添加和检索它们?使用
Html.EditorFor(x=>x.StartDate,…)
并为
日期时间
创建自定义编辑器模板(如我回答中的链接所述)用户是否需要能够键入文本框?您是否可以强制他们始终使用JQuery日期时间选择器?用户是否需要能够键入文本框?您是否可以强制他们始终使用JQuery日期时间选择器?