Using jQuery datepicker with Facebox

by sylv3rblade on December 3, 2009

Facebox is an interesting jquery plugin but it’s also one of those annoying things on the web that likes to break stuff around it.  For my current project, I needed to use jQuery’s datepicker plugin with facebox. As expected, facebox broke datepicker :( .  I wanted to try several other implementations but since jQuery’s datepicker was the simplest one I could find, I didn’t want to waste time trying make another script work.  So I took a few minutes to debug my problem.

The problem:

Turns out that datequery relies on an elements ID.  The problem?  Facebox duplicates all the contents of the div you wanted to display and all hell breaks loose.

The solution:

Quite simple actually.

Just use jQuery to replace the element id within facebox at run time.

Here’s the script:

$(document).bind('reveal.facebox', function() {
  $('#facebox .datepicker').each( function(intIndex){
    $(this).attr('id',jQuery(this).attr('id') + '-2')
  });
});

Then just modify your binding for datepicker accordingly:

$(document).bind('reveal.facebox', function() {
	$('#date_filed_for-2').datepicker();
})

And you’re done. :D

I found this code using google-fu on frenzicmojo.net

2 comments

hi
i used the same code donsn’t work the bind is very old and jquery is replaced with $ so if you have some time please update this article thanks :)

by brahimhackman on March 18, 2010 at 12:09 pm. Reply #

hi, this is just what i want to do!! but i don’t understand where i must put the code :(
i’m new in jquery… please, can you send me a .zip file with an example page what load facebox with a input field text with a datepicker selector? i’ll appreciate it! then i modify for my target! sorry for my english…

by beppe on April 21, 2010 at 9:09 am. Reply #

Leave your comment

Required.

Required. Not published.

If you have one.