AKABUY(アカバイ) リリースのお知らせ
商品番号:TikTok41
質問者名:kococara
質問内容:(() => { // ========= スクロール・midashi 対象要素取得 ========= const scroller = document.querySelector('.scroll-listing'); // スクロール対象の外枠 const gridList = scroller?.querySelector('.jet-listing-grid__items'); // Listing Grid の中身 const midashi = document.querySelector('.hidden-midashi'); // 「まだ質問はありません」など // ========= スクロール最下部へ移動する関数 ========= const scrollToBottom = (behavior = 'smooth') => { if (!scroller) return; scroller.scrollTo({ top: scroller.scrollHeight, behavior }); }; // ========= Midashi 表示切り替え(空なら表示) ========= const toggleMidashi = () => { if (!scroller || !midashi) return; const hasItem = scroller.querySelector('.jet-listing-grid__item'); midashi.style.display = hasItem ? 'none' : 'block'; }; // ========= フォーム初期化(ボタン制御・送信後リセット) ========= document.querySelectorAll('.jet-form-builder').forEach(form => { const textarea = form.querySelector('textarea'); const button = form.querySelector('[type="submit"]'); if (!textarea || !button) return; // 入力チェックしてボタン制御 const toggleButton = () => { const isBlank = textarea.value.trim() === ''; button.disabled = isBlank; button.style.opacity = isBlank ? '0.5' : '1'; button.style.cursor = isBlank ? 'not-allowed' : 'pointer'; }; textarea.addEventListener('input', toggleButton); toggleButton(); // 送信成功時にフォーム状態リセット document.addEventListener('jet-form-builder/ajax/on-success', e => { if (e.detail?.form !== form) return; textarea.value = ''; toggleButton(); form.classList.remove('jet-form-builder__locked'); button.disabled = true; button.classList.remove( 'jet-form-builder__submit--loading', 'jet-form-builder__submit--disabled', 'jet-form-builder__submit--success' ); }); }); // ========= テキストエリアの高さ自動調整(複数行対応) ========= document.querySelectorAll('textarea.auto-grow').forEach(textarea => { const wrapper = textarea.closest('.form-wrapper'); if (!wrapper) return; const BASE = 50, PAD = 30; // 高さ反映処理 const setH = h => { textarea.style.height = h + 'px'; wrapper.style.height = h + PAD + 'px'; }; setH(BASE); // 入力による高さ調整 textarea.addEventListener('input', () => { const lines = textarea.value.replace(/n+$/, '').split('n').length; if (lines { textarea.value = ''; setH(BASE); }); }); // ========= Grid に新しい投稿が追加されたときスクロール ========= if (scroller && gridList) { const observer = new MutationObserver(mutations => { const added = mutations.some(m => [...m.addedNodes].some(n => n.nodeType === 1 && n.matches('.jet-listing-grid__item') ) ); if (added) { toggleMidashi(); // Midashi 表示切り替え setTimeout(() => scrollToBottom('smooth'), 200); // 少し待ってからスクロール } }); observer.observe(gridList, { childList: true, subtree: true }); } // ========= JetFormBuilder送信成功時:Grid更新+スクロール ========= document.addEventListener('jet-form-builder/ajax/on-success', () => { // SmartFilters を通じて再取得 if (window.JetSmartFilters?.setProviderRefresh) { window.JetSmartFilters.setProviderRefresh('chat-provider'); } // Midashiとスクロールを少し遅延して実行 setTimeout(() => { toggleMidashi(); scrollToBottom('smooth'); }, 600); }); // ========= ページ初回ロード時:Midashi確認+スクロール ========= window.addEventListener('load', () => { toggleMidashi(); setTimeout(() => scrollToBottom('auto'), 500); }); })(); // ========= ボタンクリック時にmidashi強制非表示(フォーム送信前でも) ========= document.addEventListener('DOMContentLoaded', () => { const form = document.querySelector('.jet-form-builder'); const button = form?.querySelector('[type="submit"]'); const midashi = document.querySelector('.hidden-midashi.chat-empty'); if (form && button && midashi) { button.addEventListener('click', () => { midashi.style.setProperty('display', 'none', 'important'); midashi.classList.add('force-hidden'); }); } }); // ========= textarea単独の高さ初期化と入力でのリサイズ ========= document.addEventListener('DOMContentLoaded', function () { const textarea = document.querySelector('.jet-form-builder textarea'); const formWrapper = document.querySelector('.form-wrapper'); const BASE_HEIGHT = 50; if (!textarea) return; // 初期高さ textarea.style.height = BASE_HEIGHT + 'px'; textarea.style.overflow = 'hidden'; // 入力で高さ変化 const autoResize = () => { textarea.style.height = BASE_HEIGHT + 'px'; // 一度リセット textarea.style.height = textarea.scrollHeight + 'px'; formWrapper.style.height = ''; // wrapperも初期化 }; textarea.addEventListener('input', autoResize); // 送信成功後にリセット document.addEventListener('jet-form-builder/ajax/on-success', () => { textarea.value = ''; textarea.style.height = BASE_HEIGHT + 'px'; formWrapper.style.height = ''; }); });
回答案内:まだ回答されていません。

条件で絞り込む

カテゴリー
価格設定
価格設定 - slider
価格設定 - inputs
フォロワー数から探す
フォロワー数から探す - slider
フォロワー数から探す - inputs