【问题标题】:jQuery datepicker posting wrong date valuejQuery datepicker 发布错误的日期值
【发布时间】:2012-02-23 16:23:46
【问题描述】:

我正在使用 jQuery datepicker 来请求用户输入日期。我已经设置了本地默认值并让它生成我想要的正确日期格式(dd/mm/yyyy)。出于某种原因,此日期以 (mm/dd/yyyy) 形式发布 - 我如何确保发布正确的格式?

设置默认值:

jQuery(function($) {
    $.datepicker.regional['en-GB'] = {
        monthNames: [
            'January',
            'February',
            'March',
            'April',
            'May',
            'June',
            'July',
            'August',
            'September',
            'October',
            'November',
            'December'
        ],
        monthNamesShort: [
            'Jan',
            'Feb',
            'Mar',
            'Apr',
            'May',
            'Jun',
            'Jul',
            'Aug',
            'Sep',
            'Oct',
            'Nov',
            'Dec'
        ],
        dayNames: [
            'Sunday',
            'Monday',
            'Tuesday',
            'Wednesday',
            'Thursday',
            'Friday',
            'Saturday'
        ],
        dayNamesShort: [
            'Sun',
            'Mon',
            'Tue',
            'Wed',
            'Thu',
            'Fri',
            'Sat'
        ],
        dayNamesMin: [
            'Su',
            'Mo',
            'Tu',
            'We',
            'Th',
            'Fr',
            'Sa'
        ],
        dateFormat: 'dd/mm/yy', 
        firstDay: 1,
        renderer: $.datepicker.defaultRenderer,
        prevText: 'Prev', 
        prevStatus: 'Show the previous month',
        prevJumpText: '<<', 
        prevJumpStatus: 'Show the previous year',
        nextText: 'Next', 
        nextStatus: 'Show the next month',
        nextJumpText: '>>', 
        nextJumpStatus: 'Show the next year',
        currentText: 'Current',
        currentStatus: 'Show the current month',
        todayText: 'Today',
        todayStatus: 'Show today\'s month',
        clearText: 'Clear',
        clearStatus: 'Erase the current date',
        closeText: 'Done',
        closeStatus: 'Close without change',
        yearStatus: 'Show a different year',
        monthStatus: 'Show a different month',
        weekText: 'Wk',
        weekStatus: 'Week of the year',
        dayStatus: 'Select DD, M d',
        defaultStatus: 'Select a date',
        isRTL: false
    };
    $.datepicker.setDefaults($.datepicker.regional['en-GB']);
});

初始化日期选择器

    $(".datepicker").each(function () {
        $(this).datepicker({
            onSelect: onSelectHandler
        });
    });

【问题讨论】:

  • 给我们看一些代码。很难猜出你做错了什么。

标签: javascript jquery


【解决方案1】:

您只需要这样做:

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

查看this simple jsFiddle demo

编辑:看起来您的代码对我有用。发了new fiddle with your code。此外,您不需要执行 .each()。只需 $(".datepicker").datepicker({onSelect: onSelectHandler});应该可以。

【讨论】:

  • 页面格式正确。这是错误的帖子值。
  • @me232 啊!现在这是不同的东西。帖子中的格式是否错误(你能用 fiddler 之类的东西看到这个吗?)还是你的服务器在收到帖子时重新格式化它?
  • 其实你说得很好。这不是确切的答案,但是是的。我正在使用 MVC3 并且某个控制器操作正在执行后重定向,这会导致转换并在我的日志中显示为页面请求,并且日期时间向后。我只是希望有人知道日期选择器在提交日期时会做什么,这样我就可以去检查一下。感谢您的建议,虽然它肯定会导致另一个关于日期格式的问题
  • @me232 日期选择器只是将显示的字符串值分配给输入元素,因此它无法控制帖子中发生的事情。除非您在发布之前对数据做任何其他事情,否则这就是应该将其传递给您的控制器的方式。现在,您可能将 DateTime 对象作为 ActionResult 的参数(或采用 DateTime 的类),因此它只会被转换为 DateTime 对象并且所有格式都将丢失。将 DateTime 对象转换为字符串时,您需要对其进行格式化。
【解决方案2】:

如果您使用的是UI Jquery,请在初始化时设置正确的格式,如下所示:

$(".selector").datepicker({dateFormat: 'dd/mm/yy'});

【讨论】:

  • 'dd/mm/yyyy' 将导致日期为 '09/02/20122012'。 jqUI 在这方面没有使用标准格式。
  • NP。如果我不费心制作一个 jsFiddle 来检查,我会给出相同的答案。
猜你喜欢
  • 2015-08-13
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多