JQuery日期选择器无法使用英国日期格式提交

5

抱歉,如果这个问题很明显但我无法弄清楚为什么它突然不工作了。我有一个jQuery日期选择器,一直以来都很好用,但突然间,当我尝试提交日期选择器所在的表单时,日期选择器会重新出现,就好像我提交的日期是无效的一样。我已经使用以下代码将我的日期设置为英国风格:

    <script type="text/javascript">
    $(document).ready(function () {
        $('.date').datepicker({ dateFormat: "dd/mm/yy", minDate: 0 });

    }); 
    </script>

我在视图中这样设置了日期选择器:

@Html.TextBox("DateDue", "", new { @class = "date" })

我认为某个地方需要选择的日期字符串必须符合美国格式(因为它会提交一个有效的美国日期(mm/dd/yyyy),但不是英国格式,即使在JavaScript中已经设置)。

我是否遗漏了一些明显的东西?有人能告诉我我在这里做错了什么吗?

我不确定是否必要,但是创建datepicker的表单如下:

@using (
    Html.BeginForm(
        Html.BeginForm(
            "Create",
            "Task",
            FormMethod.Post,
            new { id = "taskCreateForm" }
        )
    )
)

PS. 这个日期字符串在Firefox中可以正常使用并发布,但在Chrome中无法使用。

非常感谢任何帮助。

编辑:

当我禁用不显眼的js验证时,问题消失了:

<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"
        type="text/javascript"></script>

我有一种感觉这与此有关,尝试从模型注释中删除[Required]和[DataType(DataType.Date)],但这没有起作用。

不确定如何保留不显眼的js并使英国日期字符串正常工作,但我越来越倾向于编写自己的表单javascript验证,而不是费心去使用内置的东西,因为它似乎永远无法处理比“必填”验证检查更复杂的内容。


那些以@为前缀的行是什么?(这不是jQuery...) - Šime Vidas
是的,抱歉那是Razor(我想?),我正在使用MVC3。 - DevDave
1
除了这个JavaScript,您是否在页面上更改了其他的JavaScript?可能是其他地方出错导致页面出现问题。 - Patricia
我意识到我两次声明了日期选择器的默认值,谢谢 Patricia。但即使有了这个修复,问题仍然存在。 - DevDave
3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
2
您可以使用dateFormat,在您的Javascript文件中(在页面加载后等等),您可以放置以下内容:
$('.datepicker').datepicker({dateFormat:'yy-mm-dd'});

你是不是想说$('.datepicker').datepicker({altFormat:'yy-mm-dd'});?我会试一下,谢谢。 - DevDave
哦,我会编辑的,抱歉,我的意思是代码部分输入的内容:D - Tessmore

2
谷歌搜索得到了很多与本地化/全球化ASP.NET MVC 3验证相关的结果。 特别是这篇文章可能有所发现:

http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx

向下滚动到:“全球化的jQuery不显眼验证” 这个问题的答案也可能有帮助: 使用ASP.NET MVC 3本地化jquery验证 jQuery允许您覆盖不同的验证函数,例如:
 $.validator.methods.number = function (value, element) {
     return !isNaN($.parseFloat(value));
 }
你可以使用类似下面这样的代码来进行日期验证,并针对一个有效的英国日期运行它的正则表达式。

这个链接提供了一些代码,可用于覆盖数据解析方法:http://geekswithblogs.net/EltonStoneman/archive/2009/10/29/jquery-date-validation-in-chrome.aspx - daveywc

1

altFormat: "dd/mm/yy" 的输出结果是美国日期格式??好像有些东西覆盖了我的英国默认设置,但我无法找出原因... - DevDave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,