【问题标题】:jQuery UI Datepicker doesn't correctly default on mm/yyjQuery UI Datepicker 在 mm/yy 上没有正确默认
【发布时间】:2012-07-31 18:57:42
【问题描述】:

我们有一个接受月份和年份的日期字段。但是,每当用户选择该字段时,jQuery UI Datepicker 默认为当前月份和年份,并清除他们输入的任何内容。

我已将测试用例中的格式切换为 mm/dd/yy,并且 Datepicker 的行为正确,因此我相当确信基本代码是正确的。

关于如何解决此问题的任何建议?

示例代码如下:

<html>
<head></head>
<body>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.min.js"></script>
    <input type="text" id="asdf" value="07/2006" />
    <script type="text/javascript">
        $('#asdf').datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: 'mm/yy',
            showButtonPanel: true
        });
    </script>
</body>
</html>

编辑:为了更清楚一点,在以下情况下比较 Datepicker 的日期,我们在输入值中提供一天,并更改 dateFormat 选项:

<html>
<head></head>
<body>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.min.js"></script>
    <input type="text" id="asdf" value="07/01/2006" />
    <script type="text/javascript">
        $('#asdf').datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: 'mm/dd/yy',
            showButtonPanel: true
        });
    </script>
</body>
</html>

【问题讨论】:

    标签: jquery-ui datepicker


    【解决方案1】:

    我以为我第一次就理解了你的问题,但另一个人让我感到困惑。问题似乎是 datepicker 没有将 mm/yy 格式视为真正的日期时间格式,因此在尝试查找当前日期时会感到困惑,这意味着您必须做一些时髦的事情作为解决方法。我并不是说这是最好的方法,但这是我已经解决的问题。

    请注意,这里使用的是 Date.js

    $('#asdf').datepicker({ changeMonth: true, changeYear: true, dateFormat: 'mm/yy',beforeShow: function(input, inst) 
    {   //getter
        var defaultDate = $( "#asdf" ).datepicker( "option", "defaultDate" );
        //setter
        $( "#asdf" ).datepicker( "option", "defaultDate",   Date.parseExact($("#asdf").val(), "M/yyyy"));
    }  });
    

    【讨论】:

    • 在对我们的特定用法进行了细微调整之后,这非常有效。谢谢!
    【解决方案2】:

    看起来它不会将月份或年份的更改视为“选择”操作,但会在您单击某天时更改月份/年份。也就是说,如果你更改了月份和年份,但没有点击某一天,它就认为你取消了操作。

    您可以尝试为 onChangeMonthYear 事件 (docs) 编写一些代码来读取选定的月份/年份并自行关闭日历对话框。

    【讨论】:

    • 抱歉,可能不太清楚。因此,当您加载上述内容时,您会在页面上的唯一字段中看到 07/2006。当您的鼠标进入该字段时,日期选择器将出现,默认为当前月/年。将其与 value 和 'dateFormat' 选项包括一天的情况进行比较。 (我会用这种情况更新问题。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2012-11-24
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多