jQuery日期选择器默认日期

13

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

这些错误仅在没有日历(内联)的页面上发生。 如何在不出现此错误的情况下从选择器中提取 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,
4个回答

9

试试这个:

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

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

这不起作用,必须解析日期,但它没有。我尝试手动将日期放入字符串中,结果提前了一年。 - matthewb
你的方法是有效的,但仅适用于选择器存在的页面,其他地方我会得到一个JS未捕获异常错误。接近了,但还不够。 - matthewb
好的,这个可以了,没有JS错误并且默认值正确。谢谢,你赢得了奖励lol。 - matthewb
2
@David Radcliffe:您可能希望更新您的答案,以便将来参考评论中添加的内容? - Peter
我正在尝试这段代码,但它不起作用:defaultDate: $.datepicker.formatDate('dd-M-yy', new Date())... 有任何想法为什么会出现这种情况吗? - Bat_Programmer
显示剩余4条评论

8
我们可以通过以下方式设置默认日期:
<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) should be (2000,1,1) - zsitro

0

这对我有效:

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

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

defaultDate: nowDate;

0

你的问题有点不清楚 - 我假设你的问题出现在被注释掉的那一行。

如果我的假设是正确的,那么我认为你的问题出在 "this" 上。我不太确定你期望 "this" 是什么,但在函数内部它将是窗口对象。

如果我完全错了,请更新问题并提供更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接