Я написал функцию, которая помещает всплывающую подсказку чуть выше текстового поля.
Функция принимает два аргумента:
textBoxId - идентификатор текстового поля, над которым появится всплывающая подсказка.
toolTipId - идентификатор подсказки, которая появится над текстовым полем.
function positionTooltip(textBoxId, toolTipId){
var hoverElementOffsetLeft = $(textBoxId).offset().left;
var hoverElementOffsetWidth = $(textBoxId)[0].offsetWidth;
var toolTipElementOffsetLeft = $(toolTipId).offset().left;
var toolTipElementOffsetWidth = $(toolTipId)[0].offsetWidth;
// calcluate the x coordinate of the center of the hover element.
var hoverElementCenterX =
hoverElementOffsetLeft + (hoverElementOffsetWidth / 2);
// calculate half the width of the toolTipElement
var toolTipElementHalfWidth = toolTipElementOffsetWidth / 2;
var toolTipElementLeft = hoverElementCenterX - toolTipElementHalfWidth;
$(toolTipId)[0].style.left = toolTipElementLeft + "px";
var toolTipElementHeight = $(toolTipId)[0].offsetHeight;
var hoverElementOffsetTop = $(textBoxId).offset().top;
var toolTipYCoord = hoverElementOffsetTop - toolTipElementHeight;
toolTipYCoord = toolTipYCoord - 10;
$(toolTipId)[0].style.top = toolTipYCoord + "px";
$(toolTipId).hide();
$(textBoxId).hover(
function(){ $(toolTipId + ':hidden').fadeIn(); },
function(){ $(toolTipId + ':visible').fadeOut(); }
);
$(textBoxId).focus (
function(){ $(toolTipId + ':hidden').fadeIn(); }
);
$(textBoxId).blur (
function(){ $(toolTipId+ ':visible').fadeOut(); }
);
}
<ч />
Функция отлично работает при начальной загрузке страницы:
<ч />
Однако после изменения пользователем размера окна всплывающие подсказки перемещаются в места, которые больше не отображаются над соответствующим текстовым полем.
<Ч />
Я попытался написать некоторый код для решения проблемы, вызвав функцию positionTooltip () при изменении размера окна, но по какой-то причине всплывающие подсказки не меняются, как при загрузке страницы:
var _resize_timer = null;
$(window).resize(function() {
if (_resize_timer) {clearTimeout(_resize_timer);}
_resize_timer = setTimeout(function(){
positionTooltip('#textBoxA', ('#toolTipA'));
}, 1000);
});
Я действительно в растерянности относительно того, почему он неправильно перемещает всплывающую подсказку, как это было, когда страница была первоначально загружена после изменения размера.