jQuery UI datepicker不会在iOS上单击外部时消失

时间:2019-01-23 11:29:31

标签: jquery datepicker jquery-ui-datepicker

我在我的PHP站点中添加了jquery datepicker。在iOS上单击外部时,日期选择器不会消失。它在桌面上运行良好。有人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:0)

您的日期选择器具有hasDatepicker类,因此请尝试以下操作:

func datesOfCurrentMonth(with weekday : Int) -> [Date] {
    let calendar = Calendar.current
    var components = calendar.dateComponents([.year, .month, .weekdayOrdinal], from: Date())
    components.weekday = weekday
    var result = [Date]()

    for ordinal in 1..<6 { // maximum 5 occurrences
        components.weekdayOrdinal = ordinal
        let date = calendar.date(from: components)!
        if calendar.component(.month, from: date) != components.month! { break }
        result.append(calendar.date(from: components)!)
    }
    return result
}

与我想到的其他方式相比,它相对较短。

$(".hasDatepicker").blur(function(e) { $(this).datepicker("hide"); });

我遇到的问题是能够分辨单击跨度图标的时间,它不是真的想要合作,因此额外的内容具有类检查功能

答案 1 :(得分:0)

我使用了这种解决方案,可能不是最好的,但对我有用。欢迎反馈

CSS:

#backdrop {visibility:hidden;z-index: 5;position:fixed;background-color:#000;height:100%;width:100%;top:0px;left:0px;margin:0px;padding:0px;}

z-index调整为适当的值,以确保#backdrop(未隐藏时)位于其他元素的前面,并且Datepicker在堆栈顺序中最高

jQuery:

$jq('#elementid').datepicker({
            beforeShow: function(){
                if (navigator.userAgent.match(/(iPod|iPhone|iPad)/) && !window.MSStream) {
                   if ($('backdrop') == null) {
                        var screen = new Element('div', {'id': 'backdrop'});
                        document.body.appendChild(screen);
                   }
                   Event.observe('backdrop', 'click', function() {
                        $jq("$jq('#elementid').").datepicker("hide");
                   });
                   $jq('#backdrop').css({'visibility': 'visible', 'opacity': '0'}); //adjust visible opacity if required
            },
            onClose: function(){
                if ($('backdrop') != null) {
                        $jq('#backdrop').css({'visibility': 'hidden', 'opacity': '0'});
                   }
            }
});