fancybox中的jqueryUI datepicker不起作用

时间:2013-09-02 13:52:18

标签: jquery-ui datepicker fancybox

我有这个奇怪的问题。当我将带有datepicker类的输入放入fyncybox包装时,当我点击该输入时,datepicker不会显示。

<a href="#test" class="fancybox">Open</a>
<div id="test" style="display:none;width:300px;">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque blandit, mi sed
</p>
<input type="text" class="datepicker"/>
</div>

$(".datepicker").datepicker();

$(".fancybox").fancybox({
    openEffect  : 'none',
    closeEffect : 'none',
    afterLoad   : function() {
        this.inner.prepend( '<h1>1. My custom title</h1>' );
        this.content = '<h1>2. My custom title</h1>' + this.content.html();
    }
});

在小提琴上看到这个example

提前致谢; - )

2 个答案:

答案 0 :(得分:3)

您好我最终找到了这两个解决方案:

FIRST: fiddle of first solution here

$(document).on('click', '.datepicker', function(){ 
    if (!$(this).hasClass('hasDatepicker')) { 
        $(this).datepicker(); $(this).datepicker('show'); 
    }
}); 

$(".fancybox").fancybox({
    openEffect  : 'none',
    closeEffect : 'none',
    afterLoad   : function() {
       this.inner.prepend( '<h1>1. My custom title</h1>' );
       this.content = '<h1>2. My custom title</h1>'+ this.content.html();
    }
});

SECOND: fiddle of second solution here

$(".datepicker").datepicker();

$(".fancybox").fancybox({
   openEffect  : 'none',
   closeEffect : 'none'
});

答案 1 :(得分:0)

这一行让jquery ui感到困惑,因为你正在复制html。

 this.content = '<h1>2. My custom title</h1>' + this.content.html();

删除display: none时,您可以看到这种情况。尝试将html添加到原始div中,这样可以正常工作:

$(".fancybox").fancybox({
    openEffect  : 'none',
    closeEffect : 'none',
    afterLoad   : function() {
        $("#test").prepend( '<h1>1. My custom title</h1>' );
        $("#test").prepend('<h1>2. My custom title</h1>');
    }
});