今天在项目到遇到一个select2插件在jquery UI Dialog 不能focus到搜索框的问题,后来在js 代码中加入(位置可以自己选 ,我选的位置是select2.min.js 后面,因为很多地方都用到,不用针对一个一个功能去修改):

$.ui.dialog.prototype._allowInteraction = function(e) {
    return !!$(e.target).closest('.ui-dialog, .ui-datepicker, .select2-drop').length;
};

出现这个问题的原因是:

the reason the dropdown is appended into the body and is the last element is so that it may overlay the dialog when the choice box is taller then the dialog instead of scrolling inside it.

initially select2 did append the dropdown to the container instead of body, but the afore mentioned problem with dialogs is what prompted me to refactor it to append to body in the first place. so far this proved to be a solution with the least amount of problems.

unfortunately its not a perfect solution, not when the dialogs are built with these weird restrictions in place.

这个原因来自:https://github.com/ivaynberg/select2/issues/1246