Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Положение элемнта .offset().left и position:absolutle (https://javascript.ru/forum/dom-window/24253-polozhenie-ehlemnta-offset-left-i-position-absolutle.html)

denisOgr 22.12.2011 22:30

Положение элемнта .offset().left и position:absolutle
 
На странице есть поля типа input и у каждого есть атрибут tooltip="Подсказка":
<input type="text" name="name" value="ФИО"  title="ФИО" tooltip="Введите ФИО"/>


JS скриптом я ниже каждого такого поля создаю <span> с подсказкой.
$('[tooltip]').each(function(){
        $(this).after('<span class="tooltip">'+$(this).attr('tooltip')+'</span>');
        
       });


СSS
.tooltip{
    width: 200px;
    visibility: hidden;   
    z-index: 99;
    position: absolute; 
   ....................


При focus()/blur() делаю их visible/hidden

$('input[type=text]').focus(function(e){            
       
         var left = $(this).offset().left;
         var top = $(this).offset().top+30;   
         $(this).next('.tooltip').css({'visibility':'visible','top':top,'left':left})
           
        }).blur(function() {         
         $(this).next('.tooltip').css({'visibility':'hidden'})  
        });


Все работает. Но есть проблема. Есть div.
Изначально display:none;
В нем форма.
У него position:absolutle.
По событию его display:block; Он появляется по центру экрана.
Когда кликаю у поля подсказки появляют внизу экранаб а не под полями.
Там где он распологает в коде, без стиля position:absolutle
Если у #forma убираю position:absolutle, то все работает.
но как тогда помести ее в центр экрана поверх страницы.

Как сделать что бы подсказки в блоке с position: absolute; выводитлись там где спозиционирован блок?
Вот пример.
В примере нажмите на поле в фильтре(подсказка ниже появится)
и нажмите кнопку добавить и в любом поле (подсказка будет внизу)


<div id="forma">
........
 <input type="text" name="name1" value="Фамилия"  title="Фамилия" tooltip="Укажите фамилию."/>
........
</div>


CSS
#forma{
    position: absolute;
    top:25%;
    left: 40%;
   display:  none; 
}

denisOgr 22.12.2011 23:46

.position() помогло! всем спасибо, сам додумался :)

Можно темку закрывать.


Часовой пояс GMT +3, время: 23:39.