I ran into an interesting issue with jQueryUI autocomplete in a dialog box.
My dialog HTML looks like this:
<div id="copy_dialog"> <table> <tbody> <tr> <th>Title:</th> <td><input type="text" class="title" name="title"></td> </tr> <tr> <th>Number:</th> <td><input type="text" name="number"></td> </tr> </tbody> </table> </div>
When I run the jQueryUI autocomplete on the above HTML, it works perfect.
When I open it up using dialog
$('#copy').click(function() { $('#copy_dialog').dialog({ autoOpen: true, width: 500, modal: false, zIndex: 10000000, title: 'Duplicate', buttons: { 'Cancel': function() { $(this).dialog('close'); }, 'Save': function() { $(this).dialog('close'); } } }); return false; });
Then in FireBug, I can see autocomplete is still working. It's requesting and receiving results, but I no longer see a list of options below the input field.
My thought is that this has something to do with the zIndex on the dialog box being much greater than what the autocomplete menu gives, but I don't know for sure. I'm still researching exact details of what's happening, but I'm hoping someone here will have some idea for me.
Edit I tried removing the zIndex from the dialog and my autocomplete starts showing up. Unfortunately, I need that zIndex value to get over the dreadfully high zIndex of the menubar, which I can't change (don't have access to that area of the code). So if there's a way to add a zIndex to the autocomplete, that would be fantastic; until then, I'll probably just remove the zIndex from the dialog and make sure it doesn't show up around the menubar area.
Try setting the appendTo
option to "#copy_dialog"
:
$(/** autocomplete-selector **/) .autocomplete("option", "appendTo", "#copy_dialog");
This option specifies which element the autocomplete menu is appended to. By appending the menu to the dialog, the menu should inherit the correct z-index.
appendTo: Which element the menu should be appended to. When the value is null, the parents of the input field will be checked for a class of "ui-front". If an element with the "ui-front" class is found, the menu will be appended to that element. Regardless of the value, if no element is found, the menu will be appended to the body.
This means that <div id="copy_dialog" class="ui-front">
will do the trick. No need to use the option appendTo
, that did not work for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With