编程语言
首页 > 编程语言> > javascript-模式中包含Twitter的Bootstrap标头的多个字段

javascript-模式中包含Twitter的Bootstrap标头的多个字段

作者:互联网

我有一个引导程序模态,具有一个表单和两个使用引导程序预输入的输入字段.
两者都可以正常工作,但是第二个结果却无法正确显示,如下所示:

有人可以帮我吗?

编辑

JQUERY:

$(function(){

    var stopObjs = {};
    var stopNamen = [];

    $(".naamtypeahead").typeahead({
        source: function ( query, process ) {

            $.ajax({
                url: '../includes/js/autocompletenaam.php',
                type: 'GET',
                dataType: 'json',
                data: 'naam=' + query
                ,cache: false
                ,success: function(data){

                    stopObjs = {
                    };
                    stopNamen = [];

                    _.each( data, function(item, ix, list){

                        stopNamen.push( item.naam )

                        stopObjs[ item.naam ] = item.adres;
                    });

                        process( stopNamen );
                }
            });
        }
        , updater: function ( adres) {

            $( ".adres" ).val( stopObjs[ adres ] );

            return adres;
        }
    });
});

解决方法:

我发现了相同的问题(看起来像是某种错误,请参阅:https://github.com/twitter/bootstrap/pull/8436以获取可能的修复).带有选项的菜单具有绝对位置的CSS顶部.在模态中使用预先输入时,在计算顶部时不使用滚动高度.已在以下位置解决此问题:https://github.com/bassjobsen/Bootstrap-3-Typeahead

模态的滚动会导致问题,而不是使用多个字段(提前输入).

我发现的最佳解决方案(更新!):

function scrollHeight()
{
  return $('.modal-body').scrollTop();
} 

$.fn.typeahead.Constructor.prototype.show = function () {
      var pos = $.extend({}, this.$element.position(), {
        height: this.$element[0].offsetHeight
      })

      this.$menu
        .insertAfter(this.$element)
        .css({
          top: (pos.top + pos.height + scrollHeight.call())
        , left: pos.left
        })
        .show()

      this.shown = true
      return this

    }

这将覆盖typeahead类的show函数,并向其中添加$(‘.modal-body’).scrollTop().并添加对scrollHeight的调用以设置动态高度.

另请参见更新:http://bootply.com/66845(删除javascript以查看问题)

更新8月20日

上面的代码仅适用于一种模态(仅一种.modal-body类).对于两个或多个模态,请使用以下代码:

$.fn.typeahead.Constructor.prototype.show = function () {
      var pos = $.extend({}, this.$element.position(), {
        height: this.$element[0].offsetHeight
      })                    
      this.$menu
        .insertAfter(this.$element)
        .css({
          top: (pos.top + pos.height + this.$element.closest('.modal-body').scrollTop())
        , left: pos.left
        })
        .show()

      this.shown = true
      return this

}

Twitter的Typeahead和Twitter的Bootstrap 3

Twitter的Bootstrap 3删除了bootstrap-typeahead.js,并告诉您使用Twitter的Typeahead(http://twitter.github.io/typeahead.js/).另请参阅:https://github.com/twitter/bootstrap/issues/7805.切换到Twitter的Typeahead(使用Twitter的Bootstrap 2.x)似乎也可以解决您的问题.但是…
要在Bootstrap中使用Twitter的Typeahead,您需要添加一些额外的样式表:https://github.com/twitter/typeahead.js#bootstrap-integration.
在具有多个(预先输入)表单域的模式中使用此表单时,表单域将位于下拉菜单上方.要解决此问题,请在样式表中添加一个z-index:1:

.twitter-typeahead .tt-query,
.twitter-typeahead .tt-hint {
  margin-bottom: 0;
   z-index: 1;
}

另请参阅:https://github.com/jharding/typeahead.js-bootstrap.css/pull/13

Twitter的Bootstrap 3

Twitter的Typeahead与Twitter的Bootstrap 3的Bootstrap集成目前无法正常运行(2013年7月10日)

标签:twitter-bootstrap,css,javascript,jquery
来源: https://codeday.me/bug/20191123/2064683.html