...

Замена стандартных подсказок у полей на форме на tooltip`ы

Тема в разделе "Примеры сценариев", создана пользователем ksannikov, 15 авг 2025 в 15:10.

  1. ksannikov

    ksannikov Участник

    Хочу показать вам пример, как можно заменить стандартные подсказки у полей на формах, на tooltip`ы - всплывающие подсказки при наведении на поле.

    Все подробности в новом ролике, а ниже используемый код

    Стили для tooltip и скрытия стандартных подсказок:
    Код:
    
      .tooltip-cust {
        
    z-index100000;
        
    positionabsolute;
        
    displaynone;
        
    background-colorrgba(0000.75);
        
    color#fff;
        
    padding5px;
        
    border-radius5px;
      }

      .
    elma-form-text {
        
    displaynone !important
      
    }
    Код с вкладки скрипты:

    Код:
    
    declare const documentany
    declare const consoleany
    let tooltip
    any
    //функция на инициализации
    async function onInit(): Promise<void> {
        
    ViewContext.data.form_id = `id-${generateUID()}`
        
    // Создаем элемент подсказки
        
    tooltip document.createElement('div');
        
    tooltip.classList.add('tooltip-cust');
        
    document.body.appendChild(tooltip);
    }

    function 
    generateUID(): string {
        return 
    'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
            
    let r Math.random() * 16 0== 'x' : (0x3 0x8);
            return 
    v.toString(16);
        })
    }
    //функция на окончании отрисовки
    async function endInit(): Promise<void> {
        const 
    form document.querySelector(`.${ViewContext.data.form_id}`);
        if (!
    form) return
        const 
    form_elems form.querySelectorAll('.elma-form-row')
        if (
    form_elems) {
            for (
    let item of form_elems) {
                
    item.addEventListener('mouseenter', (eany) => {
                    
    let elem e.target
                    
    const tooltip_elma elem.querySelector(':scope > .elma-form-control > .elma-form-text')
                    if (
    tooltip_elma) {
                        
    tooltip.textContent tooltip_elma.textContent.trim();
                        
    tooltip.style.display 'block';
                        
    tooltip.style.left = `${e.pageX 10}px`; // Позиционируем подсказку рядом с курсором
                        
    tooltip.style.top = `${e.pageY 10}px`;
                    }
                });
                
    item.addEventListener('mousemove', (eany) => {
                    
    tooltip.style.left = `${e.pageX 10}px`;
                    
    tooltip.style.top = `${e.pageY 10}px`;
                });

                
    item.addEventListener('mouseleave', () => {
                    
    tooltip.style.display 'none'// Скрыть подсказку при уходе мыши
                
    });
            }
        }
    }
    Еще больше полезной информации в ТГ канале WhatDaELMA365