הפוך את סרגל ההתקדמות של JetFormBuilder לניתן ללחיצה

תוכן עניינים

קטע הקוד מוכן לגמרי רק להעתיק ולהדביק והוא יהפוך את השלבים בטופסי JetFormBuilder ללחיצים ומעבירים לשלבים קדימה ואחורה.

השתמשו ותהנו

JetFormBuilder Make multistep indicator clickable

הוסיפו את הקוד בפוטר של העמודים בהם מופיעים הטפסים שלכם
ניתן לעשות את זה גם באמצעות וידגט html של elementor

				
					<style>
  .jet-form-builder-progress-pages__item--wrapper { cursor: pointer; }
</style>

<script>
(function () {
  // מנסה להירשם להוק; אם עדיין לא זמין – נחזור false
  function register() {
    if (!window.JetPlugins || !window.JetPlugins.hooks) return false;

    window.JetPlugins.hooks.addAction(
      'jet.fb.multistep.init',
      'jet-form-builder/multi-step/clickable-steps',
      function (multistep) {
        const rootNode = multistep.getScopeNode();
        const globalProgress = rootNode.querySelector(
          '.jet-form-builder-progress-pages--global'
        );

        function initGlobalProgress() {
          if (!globalProgress) return;

          const items = globalProgress.querySelectorAll(
            '.jet-form-builder-progress-pages__item--wrapper'
          );

          for (const item of items) {
            item.addEventListener('click', () => {
              if (+item.dataset.page <= multistep.index.current) {
                // חזרה לשלב קודם שסומן
                multistep.index.current = +item.dataset.page;
                return;
              }

              // התקדמות קדימה, עמוד מאומת בכל פעם
              let nextStep = item.dataset.page - multistep.index.current;

              const changePage = () => {
                if (nextStep === 0) return;

                const currentPage = multistep.getCurrentPage();
                currentPage
                  .changePage()
                  .then(() => {
                    --nextStep;
                    changePage();
                  })
                  .catch(() => {});
              };

              changePage();
            });
          }
        }

        initGlobalProgress();
      }
    );

    return true;
  }

  // רישום מיידי או בהשהיה קצרה עד שה-hooks נטענים
  if (!register()) {
    const t = setInterval(() => {
      if (register()) clearInterval(t);
    }, 200);
    // אופציונלי: לכבות אחרי X שניות
    setTimeout(() => clearInterval(t), 8000);
  }
})();
</script>

				
			

מקור https://gist.github.com/Crocoblock/ef966f23a0cba3c3f504487b2cd36e81

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *