Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQueryUI autocomplete not working with dialog and zIndex

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.

like image 552
Francis Lewis Avatar asked Dec 31 '11 01:12

Francis Lewis


2 Answers

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.

like image 147
Xavi Avatar answered Sep 29 '22 06:09

Xavi


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.

like image 24
arvic.rivera Avatar answered Sep 29 '22 08:09

arvic.rivera