2016-07-02 1 views
1

У меня есть форма, где некоторые поля становятся видимыми только тогда, когда установлен флажок. Я хочу пропустить пользователя с помощью демонстрации IntroJS.Условные шаги IntroJS

Есть ли способ, с помощью которого я могу добавить условные шаги к Intro JS.

Ниже описаны способы определения. Шаг 4 должен отображаться только в том случае, если установлен определенный флажок.

intro.setOptions({ 
      steps: [ 
       { 
        intro: "Hi! Lets start personilizing your settings. Click 'Next' to begin." 
       }, 
       { 
        element: document.querySelector('#step1'), 
        intro: "Enter the email address where you would like to receive alerts. (for multiple user semi colon ';' as separator)", 
       }, 
       { 
        element: document.querySelectorAll('#step2')[0], 
        intro: "Select your time zone.", 
        position: 'left' 
       }, 
       { 
        element: '#step3', 
        intro: 'Turn \"On\" to receive payment reminder alerts.', 
        position: 'left' 
       }, 
       { 
        element: '#step4', 
        intro: 'Select a \"Fee Type\". (The setting defines the type of fee to be applied to past due accounts.)' 
       } 
      ] 
     }); 
+0

Шаги принимает JSON объекты, так что вы можете просто динамически создать объект JSON с шагов, которые вы хотите, и передать, что шаги. Будет опубликован ответ, когда я буду перед компьютером. – Carl

ответ

0

Вот ссылка на JSfiddle: https://fiddle.jshell.net/rv85ntcv/6/

Ключ в том, что вы сращивание массив шагов, когда элемент скрыт.

var btn1=document.getElementById("step1"); 
 
var btn2=document.getElementById("start"); 
 
var div=document.getElementById("step2"); 
 

 
btn1.onclick=function(){ 
 
if (div.style.display !=="none") { 
 
    div.style.display="none"; 
 
} else { 
 
    div.style.display="block"; 
 
} 
 
}; 
 
// this is the crucial part 
 
btn2.onclick=function(){ 
 
\t var steps=[ 
 
    {element:"#step1",intro:"A button", position:"right"}, 
 
{element:"#step2",intro:"This goes away sometimes"} 
 
    ]; 
 
    
 
    if (div.style.display==="none") { 
 
    \t steps.splice(1,1); 
 
    } 
 

 
    introJs().setOptions({ 
 
    steps:steps 
 
    }).start(); 
 
    
 
}
<link href="https://raw.githubusercontent.com/usablica/intro.js/master/introjs.css" rel="stylesheet"/> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/intro.js/1.0.0/intro.min.js"></script> 
 
<div id="step2"> 
 
Some text 
 
</div> 
 

 
<button id="step1" > 
 
Press me to hide div 
 
</button> 
 

 
<button id="start" > 
 
Press me to start intro 
 
</button>

 Смежные вопросы

  • Нет связанных вопросов^_^