如何在第一个onclick事件上运行日期选择器?

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事件,显示选择器.

正如其他答案所述,这不是推荐的做法.但是如果你真的想在onc​​lick而不是onload上绑定它,你可以在第一次点击时显示选择器

$(function() {
    $("#datepicker").click(function() {
        $(this).datepicker().datepicker( "show" )
    });
});
Run Code Online (Sandbox Code Playgroud)

这会将元素注册为datepicker并显示,然后同时显示它.