Nit*_*itz 7 jquery jquery-ui datepicker
我正在使用jqueryui的这个日期选择器.
如果您查看该页面,那么您会发现他们刚刚编写了一个函数,如下所示:
$(function() {
$("#datepicker").datepicker();
});
</script>
Run Code Online (Sandbox Code Playgroud)
但我想在一个文本框点击事件上打开我的日期选择器.
所以我写了这个:
$("#datepicker").datepicker();
Run Code Online (Sandbox Code Playgroud)
在我调用文本框onclick事件的一个函数中.
但在这方面存在一个问题.
我第二次点击文本框时才收到日期选择器.
如果我在页面加载后第一次点击,那么日期选择器将不会出现,但是当我第二次点击时,日期选择器即将到来.
为什么?我可以在第一次点击时这样做吗?
是的我知道如果我把第一个代码放在我的函数中我已经完全发生了.
编辑:
现在我将向所有人解释我到底在做什么.
我的要求是这样的:
1)当我第一次选择日期时.在今天的日期之前的日期应该在日历中禁用.
2)现在,当我在日历中第二次选择日期时,日期应该在上一个日期之后的一天开始.
我写得像这样....
$(function() {
$('#from').datepicker({
defaultDate: "+5d",
changeMonth: true,
numberOfMonths:1 ,
minDate:"+0d",
dateFormat: 'DD, MM d, yy',
onSelect: function(selectedDate) {
var option = this.id == "from" ? "minDate" : "maxDate";
var instance = $(this).data("datepicker");
var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
dates.not(this).datepicker("option", option, date);
}
});
});
Run Code Online (Sandbox Code Playgroud)
这完全适用于一个要求,
但对于第二个要求,我需要首先检查是否有任何文本框值.如果有
,则应选择直接+1到该日期,并且应禁用之前的日期.
这该怎么做?
Sim*_*olt 17
它在第一次点击时没有显示的原因是因为你第一次点击它的那一刻,它没有被注册为日期选择器.因此它没有onclick事件告诉它当你点击它时它应该显示任何datepicker.
但是,在第二次单击时,您在第一次单击期间将其设置为日期选择器(现在它有一个onclick事件,其中将显示日期选择器).触发日期选择器的onclick事件,显示选择器.
正如其他答案所述,这不是推荐的做法.但是如果你真的想在onclick而不是onload上绑定它,你可以在第一次点击时显示选择器
$(function() {
$("#datepicker").click(function() {
$(this).datepicker().datepicker( "show" )
});
});
Run Code Online (Sandbox Code Playgroud)
这会将元素注册为datepicker并显示,然后同时显示它.