首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery UI数据报警器月份和年份组合无法在jQuery BlockUI中工作(弹出)

jQuery UI数据报警器月份和年份组合无法在jQuery BlockUI中工作(弹出)
EN

Stack Overflow用户
提问于 2013-08-12 11:51:09
回答 1查看 7.7K关注 0票数 8

当我在jQuery中打开BlockUI (弹出窗口)并尝试更改月份和年份时,下拉列表不会打开。它在弹出窗口很好,但在数据报警器的外面。

HTML:

代码语言:javascript
复制
<div class="popup">
    Date Picker<input type="text" class="datepicker" />
</div>

jQuery:

代码语言:javascript
复制
$(document).ready(function(e) {
    $.blockUI({
        message:$('.popup'),
        focusInput: false,
        onBlock:function(){}
    });

    $( ".datepicker" ).datepicker({
        dateFormat: 'dd-mm-yy',
        changeYear: true,
        changeMonth: true,
        yearRange: 'c-10:c+3',
        showButtonPanel: false            
    }); 
});

jsFiddle

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-12 13:33:49

这是因为jquery blockUI正在捕捉您的单击事件,请看一下它的handler()函数:

代码语言:javascript
复制
// event handler to suppress keyboard/mouse events when blocking
function handler(e) {
    // allow tab navigation (conditionally)
    [...]
    var opts = e.data;
    // allow events within the message content
    if ($(e.target).parents('div.' + opts.blockMsgClass).length > 0)
        return true;

    // allow events for content that is not being blocked
        return $(e.target).parents().children().filter('div.blockUI').length == 0;
};

因此,您的单击事件将仅被传播:

  • 如果单击的元素祖先是具有css类divblockMsg (或者如果您更改了默认的blockMsgClass选项值,则为您自己的类)
  • 或者,如果您单击的元素祖先的子类不是.blockUI css类的div

问题是(div#ui-datepicker-div)是在div.popup之外自动附加的,因此它没有满足任何这些需求。

因此,一个快速的解决方法是将css类blockMsg添加到数据选择器div (它是单击的select元素的祖先),就像在这个jsFiddle中那样。

另一种解决方案是,一旦弹出div生成,就将datepicker div附加到弹出div中,但是当您打开datepicker时,会出现定位问题。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18186257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档