Сейчас узнаем, какой подарок выпадет именно Вам
Крутите колесо
Как сделать поиск по ИНН в каталоге Tilda

Как сделать поиск по ИНН в каталоге Tilda

ИНН для теста 7703123456
1
Создали карточки предприятий в каталоге
Прописали ИНН в артикул
2
Создали блок ST340, отображение 1 карточка в ряду
Задали этому блоку класс uc-search-block
3
Вставили код на страницу в блок Т123
Mo-ti Level Up
Видео инструкции по добавлению кода и работе с Zero Block.
Как сделать поиск по ИНН в каталоге Tilda
Фрагмент видео
Библиотека для примера
<script>
(function() {
    var checkInterval = setInterval(function() {
        if (window.tCatalogDict && window.tCatalogDict.searchplaceholder === "Поиск") {
            window.tCatalogDict.searchplaceholder = "Введите ИНН (от 10 до 12 символов)";
            
            clearInterval(checkInterval);

            var inputs = document.querySelectorAll('input[type="search"], .t-store__search-input, .t-catalog__search-input, [placeholder="Поиск"]');
            inputs.forEach(function(input) {
                input.placeholder = "Введите ИНН (от 10 до 12 символов)";
            });
        }
    }, 50);
    
    setTimeout(function() {
        clearInterval(checkInterval);
    }, 5000);
})();
</script>


<script>
(function() {
    'use strict';

    function initSearchBlock() {
        const searchBlock = document.querySelector('.uc-search-block');
        if (!searchBlock) return;

        const gridContList = searchBlock.querySelectorAll('.js-catalog-grid-cont');
        if (!gridContList.length) return;

        let inputEl = null;
        let searchBtn = null;
        let searchWrapper = null;
        let isInitialized = false;
        let searchAnimationInterval = null;
        let isSearching = false;

        function getElements() {
            if (!inputEl) {
                inputEl = searchBlock.querySelector('input.t-catalog__filter__input');
            }
            if (!searchBtn) {
                searchBtn = searchBlock.querySelector('.js-catalog-filter-search-btn');
            }
            if (!searchWrapper) {
                searchWrapper = searchBlock.querySelector('.t-catalog__search-wrapper');
            }
            return { input: inputEl, btn: searchBtn, wrapper: searchWrapper };
        }

        function updateButtonState() {
            const { input, btn } = getElements();
            if (!input || !btn) return;

            const val = input.value.trim();
            const len = val.length;

            if (len >= 10 && len <= 12) {
                btn.disabled = false;
                btn.classList.remove('t-btn_disabled');
                searchBlock.classList.remove('disable-search');
            } else {
                btn.disabled = true;
                btn.classList.add('t-btn_disabled');
                searchBlock.classList.add('disable-search');
            }
        }

        function startSearchAnimation() {
            const { wrapper } = getElements();
            if (!wrapper || isSearching) return;

            isSearching = true;
            let dotCount = 0;

            stopSearchAnimation();

            searchAnimationInterval = setInterval(function() {
                dotCount = (dotCount % 3) + 1; 
                const dots = '.'.repeat(dotCount);
                wrapper.setAttribute('data-search-text', 'Найти' + dots);
            }, 400); 
        }

        function stopSearchAnimation() {
            const { wrapper } = getElements();
            
            if (searchAnimationInterval) {
                clearInterval(searchAnimationInterval);
                searchAnimationInterval = null;
            }

            if (wrapper) {
                wrapper.setAttribute('data-search-text', 'Найти');
            }

            isSearching = false;
        }

        function setupInputValidation() {
            if (isInitialized) return;
            const { input, btn, wrapper } = getElements();
            if (!input || !btn) return;

            isInitialized = true;

            input.setAttribute('type', 'number');
            input.setAttribute('inputmode', 'numeric');
            input.setAttribute('pattern', '[0-9]*');

            if (wrapper) {
                wrapper.setAttribute('data-search-text', 'Найти');
            }

            btn.disabled = true;
            btn.classList.add('t-btn_disabled');
            searchBlock.classList.add('disable-search');

            btn.addEventListener('click', function(e) {
                const len = input.value.trim().length;
                if (len >= 10 && len <= 12) {
                    startSearchAnimation();
                }
            });

            input.addEventListener('keydown', function(e) {
                const allowedKeys = [
                    'Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown',
                    'Tab', 'Home', 'End', 'Insert', 'Escape'
                ];
                if (allowedKeys.indexOf(e.key) !== -1) return;

                if (e.key === 'Enter') {
                    const len = input.value.trim().length;
                    if (len < 10) {
                        e.preventDefault();
                        return false;
                    }
                    startSearchAnimation();
                    return;
                }

                if (e.ctrlKey || e.metaKey) return;

                if (!/^\d$/.test(e.key)) {
                    e.preventDefault();
                    return false;
                }

                const currentVal = input.value.trim();
                const selectionStart = input.selectionStart;
                const selectionEnd = input.selectionEnd;

                if (selectionStart !== selectionEnd) {
                    const newVal = currentVal.slice(0, selectionStart) + e.key + currentVal.slice(selectionEnd);
                    if (newVal.length > 12) {
                        e.preventDefault();
                        return false;
                    }
                    return;
                }

                if (currentVal.length >= 12) {
                    e.preventDefault();
                    return false;
                }
            });

            input.addEventListener('input', function() {
                let val = input.value;
                
                val = val.replace(/\D/g, '');
                
                if (val.length > 12) {
                    val = val.slice(0, 12);
                }
                
                if (input.value !== val) {
                    input.value = val;
                }

                updateButtonState();
            });

            input.addEventListener('keypress', function(e) {
                if (e.key === 'Enter') {
                    const len = input.value.trim().length;
                    if (len < 10) {
                        e.preventDefault();
                        return false;
                    }
                }
            });
        }

        function checkAndShowResults() {
            const { input } = getElements();
            if (!input) return;

            const val = input.value.trim();
            const len = val.length;

            if (val !== '' && len >= 10 && len <= 12) {
                searchBlock.classList.add('show-search-results');
            } else {
                searchBlock.classList.remove('show-search-results');
            }
        }

        gridContList.forEach(function(el) {
            el.addEventListener('tStoreRendered', function(e) {
                setupInputValidation();
                checkAndShowResults();
                
                stopSearchAnimation();
            });
        });
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initSearchBlock);
    } else {
        initSearchBlock();
    }
})();
</script>


<style>


.t-catalog__filter__reset.js-catalog-filter-reset:after {
    content: "Сбросить";
    font-size: 14px;
}

.t-catalog__filter__reset.js-catalog-filter-reset {
    font-size: 0;
}

.t-catalog__filter__sort {
    display: none;
}

svg.t-catalog__search-icon.js-catalog-filter-search-btn.t-btn_disabled {
    pointer-events: none;
}

.t-catalog__filter__controls-wrapper {
    gap: 0;
}


.uc-search-block .js-product.t-catalog__card {
    display: none !important;
}

.uc-search-block.show-search-results .js-product.t-catalog__card {
    display: flex !important;
}


.t-catalog__filter__chosen-val.js-catalog-filter-chosen-item {
    display: none;
}

.t-catalog__filter__reset.js-catalog-filter-reset {
    display: block;
}


.t-catalog__filter__search-and-sort.js-catalog-filter-search-and-sort {
    margin-left: 0;
    width: 100%;
    display: block !important;
}



.js-catalog-sort-mob-btn.t-catalog__filter__sort-mob-btn {
    display: none;
}

.js-catalog-search-mob-btn.t-catalog__filter__search-mob-btn {
    display: none;
}


.t-catalog__filter__search.t-descr {
    width: inherit;
}

input.t-catalog__filter__input.js-catalog-filter-search {
    width: auto;
    flex-grow: 1;
    height: 60px;
    color: #11101f;
    border: 1px solid #fcb42f;
    border-radius: 10px;
    font-size: 16px;
    line-height: 1.33;
    outline: none;
    padding: 0 20px;
    padding-left: 65px;
    background: transparent;
}

.t-catalog__search-wrapper {
    display: flex;
    gap: 15px;
}

.t-catalog__search-wrapper:before {
    content: "";
    background-image: url(https://static.tildacdn.com/tild3466-6236-4865-b366-363964636134/image-svg.svg);
    background-repeat: no-repeat;
    background-size: 30px;
    background-position: 20px 16px;
    position: absolute;
    z-index: 99;
    width: 60px;
    height: 60px;
}


svg.t-catalog__search-icon.js-catalog-filter-search-btn {
    position: relative !important;
    border: none;
    width: 200px;
    padding: 0;
    height: 60px;
    opacity: 0;
}

.t-catalog__search-wrapper:after {
    content: attr(data-search-text);  
    pointer-events: none;
    height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 200px;
    position: absolute;
    font-size: 16px;
    font-weight: 500;
    right: 0;
    top: 0;
    color: #ffffff;
    background-color: #fcb42f;
    --border-width: 0px;
    border-style: none !important;
    border-radius: 10px;
    box-shadow: none !important;
    transition-duration: 0.2s;
    transition-property: background-color, color, border-color, box-shadow, opacity, transform, gap;
    transition-timing-function: ease-in-out;
    
}

.t-catalog__search-wrapper:has(.t-btn_disabled):after {
    opacity: 0.4;
}



.t-catalog__load-more-btn-wrap {
    display: none;
}


.js-catalog-sort-mob-btn.t-catalog__filter__sort-mob-btn {
    display: none;
}

.js-catalog-search-mob-btn.t-catalog__filter__search-mob-btn {
    display: none;
}



[class*="card__sku"],
[class*="popup__sku"]{
    display: block !important;
    color: #000;
    font-size: 0;
}

[class*="card__sku"]:before,
[class*="popup__sku"]:before {
    content: "ИНН:";
    font-size: 15px;
    margin-right: 5px;
}

span.js-product-sku {
    font-size: 15px;
}


@media screen and (max-width:660px){
    input.t-catalog__filter__input.js-catalog-filter-search {
    width: 100%;
    }
    .t-catalog__search-wrapper {
        flex-wrap: wrap;
    }

    .t-catalog__search-wrapper:after {
        width: 100%;
        position: absolute;
        font-size: 16px;
        font-weight: 500;
        right: 0;
        top: auto;
        bottom: 0;
    }
    
}

    
</style>
Made on
Tilda