ASP.NET AJAX工具包掩码日期自动完成掩码

ASP.NET AJAX工具包掩码日期自动完成掩码,asp.net,.net-2.0,ajaxcontroltoolkit,Asp.net,.net 2.0,Ajaxcontroltoolkit,我正在使用asp.net ajax工具包MaskedItemXtender为日期输入屏蔽文本框。但问题是,我无法让它根据正确输入的日期进行验证。如果我关闭自动完成蒙版,他们键入7斜杠6斜杠88,它将填充“07/06/88”,有趣的是,这不是一个有效日期。如果我自动完成面具,它会自动完成到“07/06/1988”,但它会自动完成到“07/06/0088”,即使我将世纪设置为1900 有什么建议吗 我的解决方案: 所以,自动完成是可怕的。您可能需要编写一些JS,将19放在YY前面,因为它只是附加了0

我正在使用asp.net ajax工具包MaskedItemXtender为日期输入屏蔽文本框。但问题是,我无法让它根据正确输入的日期进行验证。如果我关闭自动完成蒙版,他们键入7斜杠6斜杠88,它将填充“07/06/88”,有趣的是,这不是一个有效日期。如果我自动完成面具,它会自动完成到“07/06/1988”,但它会自动完成到“07/06/0088”,即使我将世纪设置为1900

有什么建议吗

我的解决方案:

所以,自动完成是可怕的。您可能需要编写一些JS,将19放在YY前面,因为它只是附加了00。所以你得到了“07/06/0088”

正如回答者建议的那样,我关闭了自动完成功能,但它仍然无法正确验证日期。我对日期数据类型使用了比较验证器。但事实证明,它需要一种非常具体的格式:

“1988年6月7日”


没有别的了。因此,我编写了一个自定义验证器,它将0填充到月份和日期,将19填充到年份。另外,当我使用txt框的值时,我必须复制相同的修复程序,以便将其转换为datetime而不引发异常。

我以前见过这个问题,并且有一些不同的修复程序。您是否将MaskType设置为“日期”或“无”?如果您使用的是Date,则可能需要编写一些自定义代码以使用正确的数字自动完成。如果你没有使用,你应该能够强制四位数的年份,这将有效地消除自动完成问题。这可能是我建议您采用的方法,因为您仍然可以将输入限制为数字,并将输入验证为日期,但您不必担心自动完成错误的世纪。

是的。有关我的解决方案,请参见我对问题的编辑。Idk,如果有更好的方法,但这对我很有效。谢谢你的帮助。发布你的代码会很有帮助,这样其他人可以看到你做了什么并了解它是如何工作的。