【问题标题】:Set ui datepicker max/minDate on the fly即时设置 ui datepicker max/minDate
【发布时间】:2011-07-04 06:55:46
【问题描述】:

认为这会比现在更容易。 任务:

1) 禁用未来的日子。 (将 maxDate 设置为今天 - 完成)

2)从 js 变量获取日期并将其设置为 minDate - 如何?

主函数(我用了几页):

jQuery(
    function($){
        $('#datepicker').datepicker({
             onSelect: function(dateText, inst){calendarOptions(dateText);},
            // beforeShow: function() {$("#datepicker").datepicker( "option", "minDate", curdate ).next('button').text('Kalendārs').button({icons:{primary : 'ui-icon-plus'}})}, 
             showOn: "button",
             dateFormat: 'dd.mm.yy',
             prevText: '«',
             nextText: '»',
             monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs', 'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'],
             monthNamesShort: ['JAN', 'FEB', 'MAR', 'APR', 'MAI', 'JUN', 'JUL', 'AUG', 'SEP', 'OKT', 'NOV', 'DEC'],
             dayNamesMin: ['S', 'P','O','T','C','P','S'],
             firstDay: 1,
             maxDate: calendarMaxDate()
        }).next('button').text('Kalendārs').button({icons:{primary : 'ui-icon-plus'}});
    }

);

然后是我现在要编辑的页面的 js 代码:

function calendarMaxDate(){//disable future days
var date = new Date(); 
var currentMonth = date.getMonth();
var currentDate = date.getDate();
var currentYear = date.getFullYear();
return new Date(currentYear, currentMonth, currentDate)
//return null; // set to default
}

function calendarOptions(dateText){ // sets selected date to 'external' input field
autofield_date.setValue(dateText);
}

jQuery(
    function($){ // calls function before ui datepicker button is pressed
        $('.ui-datepicker-trigger').click(function() {
        alert(autofield_dekl.getValue());
            MinDate();
        });
    }
);

function MinDate(){ //pass curdate value as'minDate' to calendar on the fly

    jQuery( //not sure about this part
        function($){ //without onload function it throws an error: $("#datepicker") is null
            $("#datepicker").datepicker( "option", "minDate", curdate ).next('button').text('Kalendārs').button({icons:{primary : 'ui-icon-plus'}})//;
        }
    )
    alert(curdate);
}

函数 MinDate() 仅在第一次按下按钮时起作用。

【问题讨论】:

  • 这是什么类型的项目?例如 ASP.NET 或 MVC?
  • MinDate 中的奇怪方式子初始化事件 onload。应该是这样吗?
  • @Luke Duddridge - 这只是 PHP/Javascript/Ajax/HTML/SQL 的混合;)。 @aavezel您在谈论'function($){}'吗?我对 jquery 很陌生,我正在做我不能做的事情。
  • 刚刚删除了 'function($){ ... }' 并且至少现在每次按下按钮时该函数都会提醒值 - 现在,唯一剩下的问题是 datepicker 没有调用函数后更改 minDate 值。
  • 问题仍然没有解决 - 现在我已经做出了替代方案,它可以工作但看起来不太好。谢谢大家的cmets。无论如何,如果有人可以提供适合问题的解决方案,我会很高兴看到它。

标签: jquery user-interface datepicker maxdate mindate


【解决方案1】:

我在this site找到了一个可能的答案

显然您使用选项值来执行此操作:

 $("#datepicker").datepicker('option', 'minDate', newDate); 

【讨论】:

  • 从 OP 的代码中可以看出,他已经在尝试设置该选项并说它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多