Cart Licenses Contact Support Online Creator Log in/Register
Try
Free
v 1.9.43

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;

Tell Us What You Think

Help us serve you better by taking this brief survey.
We are interested to learn more about your
experience of using our libraries.

We'd really appreciate your feedback.

Start the Survey

Approximate time to complete: 2 min.