Jquery Datepicker没有关闭选择?

时间:2013-01-23 22:37:09

标签: jquery datepicker

我的代码:

 var availableDates = ["23-1-2013","24-1-2013","25-1-2013"];

        function available(date) {
          dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear();
          if ($.inArray(dmy, availableDates) !== -1) {
            return [true, "","Available"];
          } else {
            return [false,"","unAvailable"];
          }
        }


        $("a.pickadate").click(function () {
            $("#datepicker").datepicker({
                    beforeShowDay: available,
                    altField: '#datepicked',
                    dateFormat: "dd-mm-yy"
                });
        });
        $("#datepicker a.ui-state-default").click(function () {
            $("#datepicker").datepicker("hide");
        });

它打开很好,填充字段很好,并显示正确的日期也很好;就在我选择的东西时,它会保持打开状态。

我的HTML是:

<input type="text" id="datepicked" name="datepicked" size="8" style="float: left;">
    <a href="javascript:void();" class="pickadate">
        <img src="media/images/icon-calendar.gif" style="float: left; margin-right: 10px;">
    </a>    
    <!-- Datepicker -->
    <div id="datepicker" style="position: absolute; left: 670px; border: 0px; z-index: 5000; top: 247px;"></div>

为什么不关闭?是否与样式标签中的CSS有关?我不知道我应该把它放在哪里。如果我拿出它,它就不会关闭,而且定位很糟糕。

3 个答案:

答案 0 :(得分:1)

当你将.datepicker放在不属于某种类型的输入的东西上时,jQuery UI似乎很讨厌它。请改为.datekpicker()上的#datepicked,并单独设置用户界面的样式。

http://jsfiddle.net/wvxmF/1/

答案 1 :(得分:1)

使用此脚本

 $(document).click(function (e) {
        var ele = $(e.target);
        if (!ele.hasClass("hasDatepicker") && !ele.hasClass("ui-datepicker") && !ele.hasClass("ui-icon") && !$(ele).parent().parents(".ui-datepicker").length)
            $(".hasDatepicker").datepicker("hide");
    });

答案 2 :(得分:0)

我知道这是一个旧线程,但也许有人会觉得这很有用:

我在网站上有许多不同的占位符,颜色不同,所以使用精确的颜色可能会覆盖样式。

这是有效的解决方案:

::-webkit-input-placeholder { color:inherit; opacity: 1 !important;}