在模态下显示的Bootstrap模式中的jQueryUI自动完成

时间:2014-03-24 21:40:24

标签: jquery twitter-bootstrap autocomplete jqmodal

我在Bootstrap模式窗口中有一个jQueryUI自动完成。当我在页面中正常运行时它工作正常,但当我尝试将其添加到模态中时,列表出现在模态后面,而不是在前面。

我尝试过以下各种变体而没有运气:

$("#myModal").css("z-index", "1500"); 
$("tags'.$fieldname.'").css("z-index", "5000");

在模态中:

data-backdrop="false"

以下是来源:

<!-- RFQ Modal -->
<div class="modal" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog" style="z-index:2000;">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>

      <div class="modal-body" data-backdrop="false"  >

      <script>
      $(function ps2() {        

      var availableTagsps2 = [
      {label:"3rd It Tech (IS# 20)", value:20},{label:"SeaBreeze Computers (IS# 14)", value:14},{label:"SeaBreeze Computers (IS# 14)", value:14},{label:"SeaBreeze Computers (IS# 14)", value:14},{label:"SeaBreeze Computers (IS# 14)", value:14},{label:"SeaBreeze Computers (IS# 14)", value:14},{label:"SeaBreeze Computers (IS# 14)", value:14} 

      ];

      $("#tagsps2").autocomplete({
           source: availableTagsps2

      });

  $( "#tagsps2" ).autocomplete({
            source: availableTagsps2,
            select: function ps2(event, ui) {
            var selectedObj = ui.item;
            $(this).val(selectedObj.label);
            $('input[name="ps2"]').val(selectedObj.value);

            return false;
        }

    });
/* $("#myModal").css("z-index","6000"); 
$("#tagsps2").css("z-index","20000");*/
  });

  </script>

  <input type="text" id="tagsps2"  required  AutoComplete="off" placeholder="Search..." 
  class="inputMed inline form-control input-med"  />
  <input type="hidden" name="ps2" value=""  />

        <div class="row" >
              <div class="col-md-6">
              <form role="form">
                  <div class="form-group" >

                    <!-- <input type="text" class="form-control" placeholder="Select client" required> -->
                  </div>

                  <button type="submit" class="btn btn-primary btn-lg">Submit</button>
                </form>
              </div>

              <div class="col-md-6">

                    <button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
                    <a href="dashboard.php?vrfq" class="light">View Sent RFQ's</a>
                    </button>
                </div>

        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>

          </div>
        </div>
      </div>
    </div>
<!-- end modal -->

    <a href="#" data-toggle="modal" data-target="#myModal"><div class="RightCounter">&    nbsp;</div><h2>RFQ</h2></a>

6 个答案:

答案 0 :(得分:45)

使用Bootstrap 3.1.1我发现只需添加以下CSS就可以使自动完成工作了。

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

ui-autocomplete类附加到UL,内部用于构建自动完成。通过给它一个疯狂的高z索引,你有效地确保它将被布置在页面中的所有其他内容上,包括模态对话框。

答案 1 :(得分:22)

jQuery autocomplete有一个内置的CSS类用于此目的。只需添加&#39; ui-front&#39; class to Bootstrap模式中的容器元素。

jQuery Autocomplete docs

  

..输入字段的父级将被检查一类   UI的前面。如果找到具有ui-front类的元素,则为菜单   将附加到该元素

答案 2 :(得分:2)

使用 appendTo 选项代替css修改: http://api.jqueryui.com/1.10/autocomplete/#option-appendTo

答案 3 :(得分:1)

$("tags'.$fieldname.'").css("zIndex", 5000); 

答案 4 :(得分:1)

对我有用的是什么:

<input type="text" id="country"  class="form-control" onclick="data()" />

然后在javascript中:

        var countries = [
    { value: 'Andorra', data: 'AD' },
    { value: 'Zimbabwe', data: 'ZZ' }
    ]; 

     function data(){
    $('#country').autocomplete({
    lookup: countries,
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
   });

   }

答案 5 :(得分:0)

我有类似的问题。尝试添加以下内容:

在标签的输入字段下方,添加一个id="tags_container"的div 像这样:

<input type="text" id="tagsps2"  required  AutoComplete="off" placeholder="Search..." class="inputMed inline form-control input-med"  />
<div id="container_tags">
</div>

然后添加以下css:

.ui-autocomplete {
    position: absolute;
}

#container_tags {
    display: block; 
    position:relative
}

这应该可以解决您的对齐问题。