【问题标题】:jquery datepicker default datejquery datepicker 默认日期
【发布时间】:2010-12-11 10:06:57
【问题描述】:

我正在尝试获取日期选择器的属性以动态提取日期,但是当我尝试将其设置为变量时出现未捕获的异常错误。

错误仅发生在没有日历(内联)的页面上。 如何在不出现此错误的情况下从选择器中提取 rel 标签?

//Event Calendar Home Page and Listing
function calendar_picker () {
$("#calendar-inline").datepicker({
   //defaultDate: $(this).attr('rel'),
    dateformat: 'yy-mm-dd',
    maxDate: '+1y',
    minDate:'-0d',
    hideIfNoPrevNext: true,
    showButtonPanel: false,
    navigationAsDateFormat: false,
    onSelect: function(dateText, inst) {
                 var d = new Date(dateText);
   var fmt1 = $.datepicker.formatDate("yy-mm-dd", d);
   $.ajax({
   type: "POST",
   url: "/events/listing/all/20/",
   dataType: "html",
                        date: "event_date="+fmt1,
   success: function(){
                        window.location.href= "/events/browse/"+fmt1;
    }});}});
}

更新 正确,注释行是我遇到的问题, 从 #calendar-inline 中提取属性 rel 的正确方法是什么。 所有尝试都会在 js 中抛出未捕获的错误

更新 2

function calendar_picker () {
var myDate = new Date($("#calendar-inline").attr('rel'));
    $("#calendar-inline").datepicker({

     dateformat: 'yy-mm-dd',
     defaultDate:myDate,

解决方案:

function calendar_picker () {
var myDate = null;
if ($("#calendar-inline").attr('rel') != null) {
     myDate = $.datepicker.parseDate("yy-mm-dd", $("#calendar-inline").attr('rel'));
     }
    $("#calendar-inline").datepicker({

     dateformat: 'yy-mm-dd',
     defaultDate:myDate,

【问题讨论】:

    标签: jquery date datepicker


    【解决方案1】:

    试试这个:

    defaultDate: $("#calendar-inline").attr('rel')
    

    这将尝试从 'rel' 属性中提取日期,如果不存在,则应返回 null。当 null 传入 datepicker 默认日期时,它将使用今天作为默认日期。

    【讨论】:

    • 这行不通,必须解析日期而不是。我尝试手动将日期放入字符串中,并且提前 1 年。
    • rel属性中的日期是什么格式?您应该能够像这样创建一个变量: var myDate = new Date($("#calendar-inline").attr('rel'));如果您将该变量传递给 defaultDate 它应该可以工作...如果没有,您可以发布一些 html 吗?
    • 当我通过你建议的新 js 代码时,rel 数据为“2009-11-19”,现在无论 rel 中有什么,它都默认为今天。
    • 由于 minDate:'-0d' 选项,今天之前的任何默认日期都将更改为今天。并且,尝试: $.datepicker.parseDate("yy-mm-dd", $("#calendar-inline").attr('rel'))
    • @David Radcliffe:您可能想用您在 cmets 中添加的内容更新您的答案以供将来参考?
    【解决方案2】:

    我们可以这样设置默认日期:

    <script type="text/javascript">
    $(function() {               
        $("#date" ).datepicker({
            changeMonth: true,
            changeYear: true,
            yearRange: '1920:2010',
            dateFormat : 'dd-mm-yy',
            defaultDate: new Date(2000,01,01)
        });
    });
    </script>
    

    http://jqueryui.com/demos/datepicker/#option-defaultDate

    【讨论】:

    • (2000,01,01) 应该是(2000,1,1)
    【解决方案3】:

    您的问题有点不清楚 - 我假设您的问题出现在注释掉的行上。

    如果这是正确的,那么我认为您的问题在于“this”。我不太确定您期望“this”是什么,但在函数内部它将是窗口对象。

    如果我完全走错了路,请用更多信息更新问题。

    【讨论】:

      【解决方案4】:

      这对我有用:

      var nowDate = new Date(year, month, day, hours, minutes, seconds, milliseconds);
      

      然后在日期选择器中,您设置:

      defaultDate: nowDate;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-10
        • 2013-01-12
        • 2011-04-09
        • 1970-01-01
        • 1970-01-01
        • 2019-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多