Вот что я придумал. Это действительно просто, я бы предпочел решение CSS. В моем случае searchBox
реагирует на свой контейнер, style="width:100%"
. При изменении размера я сопоставляю bings выпадающего контейнера max-width
с searchBox
. Ширина контейнера может быть установлена с помощью #as_container
.
// Our responsive fix for the autosuggest is to limit it's max width to the dropdown container. (Assuming our searchBox is responsive, we'll match widths)
function FixAutoSuggest() {
try {
var css = document.getElementById("autoSuggestFix");
// Create a CSS element for our fix if it hasn't been created already.
if (!css) {
css = document.createElement("style");
css.setAttribute("id", "autoSuggestFix");
css.type = "text/css";
document.body.appendChild(css);
}
// Set the appropriate width for our auto suggest container.
var searchBox = document.getElementById('searchBox')
if (searchBox != null) {
var bb = searchBox.getBoundingClientRect(), columnWidth = bb.right - bb.left;
// We set column width minimum to 150.
columnWidth = ((columnWidth > 150) ? columnWidth : 150);
css.innerHTML = "#as_container { max-width: " + columnWidth + "px }";
}
}
catch (err) {
alert('FixAutoSuggest' + err);
}
}
$(window).resize(function () {
FixAutoSuggest();
});
В моем случае окно поиска не отображается изначально, и я вызываю FixAutoSuggest()
при его отображении. Если вы покажете его при загрузке, вы всегда сможете исправить это.
$(document).ready(function () {
FixAutoSuggest();
});
Вы заметите, что в FixAutoSuggest()
я поместил минимальную ширину 150px
в раскрывающемся списке Bing. Это просто личное предпочтение, и вы можете удалить эту строку, если хотите, чтобы она сократилась до нуля. Надеюсь, это кому-нибудь поможет!