JQuery UI автозаполнение неправильно позиционирования - PullRequest
29 голосов
/ 01 апреля 2010

с использованием jquery ui 1.8 пробовать автозаполнение

Все работает, за исключением того, что пользовательское меню расположено не под моим элементом ввода, а в левом верхнем углу.

Кто-нибудь сталкивался с этой проблемой?

Вот мой HTML:

<div id="search">
    <div id="searchFormWrapper">
        <form method="post" name="searchForm" id="searchForm" action="/searchresults">
        <label for="searchPhrase" id="searchFor">
            Search for</label>
        <input name="searchPhrase" id="searchPhrase" type="text" />
        <label for="searchScope" id="searchIn">
            in</label>
        <select name="searchScope" id="searchScope">
            <option value="">All Shops</option>
            ...
        </select>
        <input type="image" name="submitSearch" id="submitSearch" src="/images/buttons/search.gif"
            alt="Search ..." />
        </form>
        <br class="clear" />
    </div>
</div>

и вот мой css:

#search
{
 width:100%;
 margin:0;
 padding:0;
 text-align:center;
 height:36px;
 line-height:36px;
 background:#666 url(/images/interface/info_bar_bg.gif) repeat-x top left;
 overflow:hidden;
 font-size:12px;
}
#searchFormWrapper
{
 width:520px;
 height:36px;
 overflow:hidden;
 margin:auto;
 padding:0;
}
label#searchFor
{
 display:block;
 float:left;
 width:80px;
 padding:0 5px 0 0;
 margin:0 0 0 0;
 text-align:right;
}
label#searchIn
{
 display:block;
 float:left;
 width:20px;
 padding:0 5px 0 0;
 margin:0 0 0 0;
 text-align:right;
}
#searchPhrase
{
 display:block;
 float:left;
 width:120px;
 margin:7px 0 0 0;
 padding:0;
}
#searchScope
{
 display:block;
 float:left;
 width:120px;
 margin:7px 0 0 0;
 padding:0;
}
#submitSearch
{
 display:block;
 float:left;
 margin:7px 0 0 10px;
 padding:0;
}

и вот мой javascript:

$(document).ready(function()
{
    $("#searchPhrase").autocomplete(
    {
        source: "/search?json",
        minLength: 2
    });
});

Ответы [ 8 ]

35 голосов
/ 06 апреля 2010

Woohoo. Найден виновник:

<script type="text/javascript" src="/scripts/jquery/132/jquery-1.4.2.min.js"></script>
            <script type="text/javascript" src="/scripts/jquery/132/jquery-ui-1.8.custom.min.js"></script>
            <script type="text/javascript" src="/scripts/jquery/100325/jquery.dimensions.js"></script>
            <script type="text/javascript" src="/scripts/jquery/100325/jquery.tooltip.js"></script>

Не включайте jquery.dimensions.js. Я предполагаю, что это уже в jquery-ui.js ... в любом случае, это решило мою проблему.

Для последней версии jqueryUI вам необходимо включить jquery.ui.position.js

16 голосов
/ 01 ноября 2012

Я просто изменил свой jquery-ui.min.js на последнюю версию, и он исправил позиционирование.

с 1.8.16 до 1.8.23 и все заработало!

12 голосов
/ 11 сентября 2011

У меня была похожая проблема, и после поиска я обнаружил, что мне не хватает JS, чтобы это исправить. В случае, если кто-то остановится, убедитесь, что также вызван скрипт "jquery.ui.position.js".

См. http://jqueryui.com/demos/autocomplete/ в зависимости: UI Core UI Widget Положение пользовательского интерфейса

4 голосов
/ 18 января 2013

Я знаю, что это старый пост, но я сам решил эту проблему и исправил ее по-другому.

Я обновил jQuery, в результате чего меню на window появилось left:0; top:0;, а не под моим вводом.

Обновление jQuery UI исправило это мгновенно. Надеюсь, это кому-нибудь пригодится.

4 голосов
/ 12 октября 2012

Просто обновление до последней версии JQueryUI помогло мне. У меня появилась эта проблема после того, как я переключился на Twitter Bootstrap (и последнюю версию JQuery, я тоже думаю).

3 голосов
/ 22 сентября 2013

Обновите сценарии Jquery UI и jQuery в вашем проекте, это разрешит любой конфликт, и проблема будет исправлена.

1 голос
/ 01 апреля 2010

1001 * ставить *

position: relative;

внутри

#searchFormWrapper
0 голосов
/ 13 августа 2012

Еще одна похожая проблема, если вы используете CDN для обслуживания файлов jquery, убедитесь, что вы используете конкретную версию, т. Е .:

//ajax.googleapis.com/ajax/libs/jquery/1.7.2/

Вместо «последней» версии:

//ajax.googleapis.com/ajax/libs/jquery/1/

Это устранит возможность конфликтов в будущих выпусках jquery, которые часто могут сломать приложение при обновлении «последней» версии jquery в CDN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...