2016-07-02 21 views
1

Ich habe ein Formular, in dem einige Felder nur dann sichtbar werden, wenn ein Kontrollkästchen aktiviert ist. Ich möchte den Benutzer durch die IntroJS-Demo führen.IntroJS Bedingte Schritte

Gibt es einen Weg, mit dem ich Intro JS bedingte Schritte hinzufügen kann.

Im Folgenden werden die Schritte definiert. Schritt 4 sollte nur angezeigt werden, wenn ein bestimmtes Kontrollkästchen aktiviert ist.

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

Schritte akzeptiert JSON-Objekte, so können Sie nur dynamisch das JSON-Objekt mit den Schritten erstellen Sie wollen, und dass zu den Schritten passieren. Wird eine Antwort posten, wenn ich vor einem Computer bin. – Carl

Antwort

0

Hier ist ein Link zu einem JSfiddle: https://fiddle.jshell.net/rv85ntcv/6/

Der Schlüssel ist, dass Sie die Schritte Array splice, wenn das Element ausgeblendet ist.

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>