Cart Licenses Contact Support Online Creator Log in/Register
Try
Buy
v 1.9.51

Custom Navigation

External navigation: Prev Next Complete
Go to page directly without validation:

                        
        
            Survey.StylesManager.applyTheme("defaultV2");
        

function doOnCurrentPageChanged(survey) {
    document.getElementById('pageSelector').value = survey.currentPageNo;
    document.getElementById('surveyPrev').style.display = !survey.isFirstPage ? "inline" : "none";
    document.getElementById('surveyNext').style.display = !survey.isLastPage ? "inline" : "none";
    document.getElementById('surveyComplete').style.display = survey.isLastPage ? "inline" : "none";
    document.getElementById('surveyProgress').innerText = "Page " + (survey.currentPageNo + 1) + " of " + survey.visiblePageCount + ".";
    if(document.getElementById('surveyPageNo')) document.getElementById('surveyPageNo').value = survey.currentPageNo;
}
function setupPageSelector(survey) {
  window.navSurvey = survey;
  var selector = document.getElementById('pageSelector');
  for(var i = 0; i < survey.visiblePages.length; i ++) {
    var option = document.createElement("option");
    option.value = i;
    option.text = "Page " + (i + 1);
    selector.add(option);
  }
}

                
                    var json = { 
    title: "Software developer survey.",
    pages: [
      {
        "title": "What operating system do you use?",
        "elements": [
          {
            "type": "checkbox",
            "name": "opSystem",
            "title": "OS",
            "hasOther": true,
            "isRequired": true,
            "choices": [ "Windows", "Linux", "Macintosh OSX" ]
          }
        ]
      },
      {
        "title": "What language(s) are you currently using?",
        "elements": [
          {
            "type": "checkbox",
            "name": "langs",
            "title": "Please select from the list",
            "colCount": 4,
            "isRequired": true,
            "choices": [
              "Javascript",
              "Java",
              "Python",
              "CSS",
              "PHP",
              "Ruby",
              "C++",
              "C",
              "Shell",
              "C#",
              "Objective-C",
              "R",
              "VimL",
              "Go",
              "Perl",
              "CoffeeScript",
              "TeX",
              "Swift",
              "Scala",
              "Emacs Lisp",
              "Haskell",
              "Lua",
              "Clojure",
              "Matlab",
              "Arduino",
              "Makefile",
              "Groovy",
              "Puppet",
              "Rust",
              "PowerShell"
            ]
          }
        ]
      },
      {
        "title": "Please enter your name and e-mail",
        "elements": [
          {
            "type": "text",
            "name": "name",
            "title": "Name:"
          },
          {
            "type": "text",
            "name": "email",
            "title": "Your e-mail"
          }
        ]
      }]
};

                    window.survey = new Survey.Model(json);
                
        
            survey.onComplete.add(function(sender) {
            document.querySelector('#surveyResult').textContent =
            "Result JSON:\n" + JSON.stringify(sender.data, null, 3);
            });
        
survey.showTitle = false;
        
            $("#surveyElement").Survey({
            model: survey ,onCurrentPageChanged: doOnCurrentPageChanged

            });
        
setupPageSelector(survey);
doOnCurrentPageChanged(survey);
survey.showTitle = false;

                    
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Custom Navigation, jQuery Survey Library Example</title>
    
<meta name="viewport" content="width=device-width" />
    <script src="https://unpkg.com/jquery"></script>
    <script src="/DevBuilds/survey-jquery/survey.jquery.min.js"></script>
    <link href="/DevBuilds/survey-core/defaultV2.min.css" type="text/css" rel="stylesheet" />
    <link rel="stylesheet" href="./index.css">

</head>
<body style="margin: 0">
    
    <div id="surveyExternalNavigation">
    External navigation:
    <span id="surveyProgress"></span>
    <span id="surveyPrev" onclick="navSurvey.prevPage();">Prev</span>
    <span id="surveyNext" onclick="navSurvey.nextPage();">Next</span>
    <span id="surveyComplete" onclick="navSurvey.completeLastPage();">Complete</span>
    <br />
    Go to page directly without validation: <select id="pageSelector" onchange="navSurvey.currentPageNo = this.value"></select>

    </div>            <div id="surveyElement" style="display:inline-block;width:100%;">
            </div>
    <div id="surveyResult"></div>

<script type="text/javascript" src="./index.js"></script>

</body>
</html>

#surveyExternalNavigation {
    padding: 16px 36px;
    line-height: 32px;
}
#surveyPrev, #surveyNext, #surveyComplete {
    color: #1ab394;
    cursor: pointer;
}
#pageSelector {
    width: 90px;
    box-sizing: border-box;
    border-radius: 2px;
    height: 34px;
    line-height: 34px;
    background: #fff;
    outline: 1px solid #d4d4d4;
    text-align: left;
    border: none;
    padding: 0 5px;
}

#pageSelector:focus {
    outline: 1px solid #1ab394;
}

Use onCurrentPageChanged event to update it after the current page is changed.

If you use knockout, please use onRedered event to initialized your custom navigation elements.

survey.onCurrentPageChanged.add(function (sender, options) {
    var survey = sender;
    var oldCurrentPage = options.oldCurrentPage;
    var newCurrentPage = options.newCurrentPage;
    //Your code
});
//Requires for knockout platoform only
survey.onRendered.add(function (sender) {
    var survey = sender;
    //Your code
});

Settings

Get/set the current page No:

from 0 to visible page count - 1.
survey.currentPageNo = yourValue;

Page Prev Text:

survey.pagePrevText = yourValue;

survey.pageNextText = yourValue;

survey.completeText = yourValue;

survey.showNavigationButtons = yourValue;