JQuery Datepicker不会发布英国日期字符串

时间:2011-11-15 15:13:34

标签: jquery asp.net-mvc-3 post razor datepicker

道歉,如果这个问题很明显,但我无法弄清楚为什么它会突然失效。我有一个jquery datepicker,只要我记得就一直工作正常,但突然间,当我尝试提交datepicker在datepicker上的表单重新出现时,好像我提交的日期无效。我已经使用以下代码行将我的日期设置为英国风格:

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

    }); 
    </script>

我在我的视图中设置了datepicker,如下所示:

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

我认为有些事情要求选择的日期字符串采用美国格式(因为它会提交有效的我们日期(mm / dd / yyyy),但不会提交英国格式,即使它已在javascript中设置。< / p>

我错过了一些明显的东西吗?谁能告诉我这里我做错了什么?

我不确定是否有必要,但是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验证而不是甚至打扰内置的东西,这似乎永远不会为比“必要的”验证检查更复杂的事情工作..

3 个答案:

答案 0 :(得分:2)

您可以使用dateFormat,因此在您的javascript文件中(在页面加载后等),您可以放置​​:

$('.datepicker').datepicker({dateFormat:'yy-mm-dd'});

答案 1 :(得分:2)

谷歌搜索提供了很多与本地化/全球化asp.net mvc 3验证相关的结果。

这篇文章特别可能涉及到某些内容:

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

向下滚动到:“Globalized jQuery Unobtrusive Validation”

这个问题的答案也可能有所帮助: Localizing jquery validation with asp.net mvc 3

jQuery允许您覆盖不同的验证函数,如下所示:

 $.validator.methods.number = function (value, element) {
     return !isNaN($.parseFloat(value));
 }

您可以为日期验证程序执行类似的操作,并针对有效的英国日期针对regEx运行它。

答案 2 :(得分:1)

尝试使用altFormat!

altFormat: "dd/mm/yy",      

这对我有用:)

编辑:在JSFiddle http://jsfiddle.net/adover/BRfcK/

上试试这个