停止在beforeShow中显示jquery-ui datepicker
我希望做这样的事情:
var showme = false; $('#mydatepicker').datepicker({ beforeShow: function(input, inst) { if(!showme) { //stop showing } } });
但禁用,也不隐藏似乎工作。 我想做一些类似于preventDefault的东西,但我不认为它会在这种情况下起作用。
从源头看,目前看起来不太可能。 您可以将其作为function请求。 如果你真的想让它停止(虽然这可能是一个坏主意)你可能会在该函数中抛出一个错误。 虽然这会导致您的页面出现错误,但可能不是一个选项。
注意 :我提交了一个补丁,它现在已经发布的jQuery UI( 至少 v1.9及更高版本),尽管文档没有提到它。 在beforeShow
return false
将阻止beforeShow
出现(现在)。
我有同样的问题,并且发现你现在可以使用return false;
防止日历显示。
$('#mydatepicker').datepicker({ beforeShow: function(input, inst) { if(!showme) { return false; } } });
我正在使用jQuery UI 1.7.2版
使用disable和enable方法参数简单地控制datepicker的显示可能会更好。
$('#mydatepicker').datepicker('disable'); //Don't show datepicker $('#mydatepicker').datepicker('enable'); //Show datepicker
它似乎达到了你所寻求的目的。
防止datepicker打开的最好方法是在beforeShow中使用以下函数:
$("#datepicker").datepicker("close");
这迫使datepicker在它显示之前关闭。
似乎是我可以得到的最接近的,但我真的不想在这里使用setTimeout,它似乎有点hacky:
var showme = false; $('#mydatepicker').datepicker({ beforeShow: function (input, inst) { if (!showme) { setTimeout(function () { $(input).datepicker("hide"); }, 1); } } });
由于这个补丁尚未合并,我能够提出一个非常好的黑客攻击。 让我知道你的想法:
beforeShow: function(){ var start = $('#dtFrom').val() if($.trim(start)!=''){ start = $('#dtFrom').datepicker('getDate'); $('#DateToDisplay').datepicker('option', 'minDate', new Date(start.getTime())); } }, onClose: function() { var start = $('#dtFrom').val() if($.trim(start)==''){ alert('Error! Please select a start date\/time prior to setting the date to display.'); $('#DateToDisplay').val('') } }