【问题标题】:JQuery Datepicker Will not post with UK date stringJQuery Datepicker 不会使用英国日期字符串发布
【发布时间】:2011-11-15 15:13:34
【问题描述】:

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

    <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 中设置。

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

不确定是否有必要,但日期选择器所在的表单是这样创建的:

@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...)
  • 是的,很抱歉,这是剃刀(我认为?),我正在使用 MVC3
  • 除此之外,您是否更改了页面上的任何 javascript?这可能是其他地方的错误。
  • 我确实意识到我两次声明了日期选择器的默认值,谢谢帕特里夏。但即使有了这个修复,问题仍然存在

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


【解决方案1】:

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

这篇文章特别可能涉及到一些事情:

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

向下滚动到:“全球化的 jQuery 非侵入式验证”

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

jQuery 允许您像这样覆盖不同的验证函数:

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

您可以对日期验证器执行类似的操作,然后针对正则表达式运行它以获得有效的英国日期。

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • 你的意思是 $('.datepicker').datepicker({altFormat:'yy-mm-dd'}); 吗?试试看,谢谢
  • 哦,我会编辑抱歉,我的意思是我在代码部分输入的内容:D
【解决方案3】:

尝试改用 altFormat!

altFormat: "dd/mm/yy",      

这对我有用:)

编辑:在 JSFiddle 上试试这个 http://jsfiddle.net/adover/BRfcK/

【讨论】:

  • altFormat: "dd/mm/yy" 正在生成美国格式的日期字符串..??似乎有些东西覆盖了我的英国默认设置,但我不知道在哪里......
猜你喜欢
  • 2012-03-19
  • 2011-04-10
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 2014-05-30
  • 2021-11-18
  • 2014-08-14
  • 1970-01-01
相关资源
最近更新 更多