自动完成问题进入引导模式


71

我在模态对话框启动程序内的jQuery自动完成功能中出现显示问题。

当我滚动鼠标时,结果不会保持附加到输入中。

有办法解决吗?

在这里JsFiddle

.ui-autocomplete-input {
  border: none; 
  font-size: 14px;
  width: 300px;
  height: 24px;
  margin-bottom: 5px;
  padding-top: 2px;
  border: 1px solid #DDD !important;
  padding-top: 0px !important;
  z-index: 1511;
  position: relative;
}

编辑 我发现了问题:

.ui-autocomplete {
  position: fixed;
  .....
}

如果模态已经滚动,问题仍然存在!

在这里JsFiddle / 1

Answers:


114

正确的位置是“绝对”,而您需要将其指定为自动完成的选项:

$( ".addresspicker" ).autocomplete( "option", "appendTo", ".eventInsForm" );

在可以将框与结果绑定到任何元素的位置,我必须停止将其固定在表单的类中!

是工作中的JsFiddle!


谢谢。如果有人遇到我同样的问题,它也适用于jquery autocomplete combobox。只需添加appendTo: ".your-form-in-modal".autocomplete({_createAutocomplete功能。
z3d0

感谢您的解决方案。但是,如果删除textarea,我们会在modal-body内看到一个滚动条。任何想法如何解决这个问题?这是一个有效的小提琴:jsfiddle.net/TtxqG/410
Sagar

6
或直接添加.ui-front到模式窗口中
teran 2016年

1
teran:这是最快的答案,谢谢!更准确,添加.ui-front到您的.modal-bodydiv中。
tomsihap '16

如果指示appendTo选项不能解决您的问题,则可以执行appendTo: $(id or class).parent()
Jose Jet

52

上面讨论该z-index问题的解决方案有效:

.ui-autocomplete { z-index:2147483647; }

确保将其放在.js负责处理模式和自动完成逻辑的脚本之前。


1
如果您阅读与您的答案完全相同的其他答案的注释,则无法通过这种方式解决问题!
Lughino 2013年

6
为我工作。不管反对者。
虚伪之王

完善。没有JS。使用CSS,这是最好的解决方案。
Koushik Das

您的解决方案也为我措辞。谢谢
Sakhawat Hossain

像魅力一样工作!
YSFKBDY

28

请查看appendTo文档

当该值为空时,将检查输入字段的父母是否有ui-front类。如果找到具有ui-front类的元素,则菜单将附加到该元素。

因此,只需将类“ ui-front”添加到父元素,自动完成功能将正确显示在模态内部。


与Foundation 5揭示模式一起使用效果很好。
迪恩·理查森

对我不起作用。到目前为止,唯一有效的方法就是破解z-index感觉不对的黑客。
CXJ

这应该是答案
Leandro

21

通过将类“ ui-front”添加到div父元素中,自动完成功能将正确显示在PopUp For Me中。


3
尽管可接受的答案会起作用,但我认为这应该是正确的答案,因为文档将其表示为默认行为:If an element with the ui-front class is found, the menu will be appended to that element
cman77

您在2年后重复已经回答过的问题。查看来自@Fernando Pinheiro
Leandro的

12

实际的问题是,Bootstrap Modal具有比页面中任何其他元素更高的Z-index。因此,自动完成实际上可以工作-但是它被隐藏在对话框的后面。

您只需要在您添加的任何css文件中添加它:

.ui-autocomplete {
  z-index:2147483647;
}

2
问题不仅在于并没有通过将参数z-index设置得如此之高来解决任何问题!问题不仅在于它保持在模态下方,而且如果使它滚动页面,结果也将不会附加到输入中,并且如果您重新阅读了问题,将会得到解释。但是,问题已解决,请参见上面的答案!
Lughino

5

为了解决这个问题,我只需要css通过jQuery更改文件即可:

.ui-front {
    z-index: 9999;
}

注意:在jquery-ui.css和jquery-ui.js之后添加此CSS


3

只需尝试添加以下内容:

.ui-autocomplete {
  z-index: 215000000 !important;
}

只要确保您赋予该物业很高的价值,并添加

!重要

真的很重要 后者将告诉您的浏览器先执行此规则,然后再执行其他相同类。希望对你有帮助


这不是响应式设计
gtzinos

我不明白你的意思@gtzinos
Ange


0

我解决了这个...

/********************************************************************
*           CORREZIONE PER L'AUTOCOMPLETE EXTENDER di AJAX TOOLKIt  *
********************************************************************/
ul[id*='_completionListElem'] {
    z-index: 215000000 !important;
}

自动完成扩展程序的完成列表具有一个带标识符的ID,例如id =' _completionListElem '

因此,您必须先将z-index ..向上推,然后再向上引导模块面板;)

希望能帮助到你


0

在文件中:styles.css

.cdk-overlay-container
{
    z-index: 9999 !important;
}

我在组件的内部css文件中尝试了所有解决方案,但只有将其移至styles.css后,它才起作用。

祝好运


-1
.ui-front {
    z-index: 9999;
}

<div class="modal fade" id="myModal" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog ui-front">
        <div class="modal-content">
            <div class="modal-header">

            </div>
            <div class="modal-body">

            </div>
        </div>
    </div>
</div>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.