Cart Buy Licenses Contact Integrate into App Docs Support Login/Register
v 1.9.0
v 1.9.0
Overview Examples Docs Source

Edit saved survey

Example of editing pre-saved or incompleted survey results


                var json = { pages: [
        {questions: [
            { type: "matrix", name: "Quality", title: "Please indicate if you agree or disagree with the following statements",
                columns: [{ value: 1, text: "Strongly Disagree" }, 
                          { value: 2, text: "Disagree" }, 
                          { value: 3, text: "Neutral" }, 
                          { value: 4, text: "Agree" }, 
                          { value: 5, text: "Strongly Agree" }],
                rows: [{ value: "affordable", text: "Product is affordable" }, 
                       { value: "does what it claims", text: "Product does what it claims" },
                       { value: "better then others", text: "Product is better than other products on the market" }, 
                       { value: "easy to use", text: "Product is easy to use" }]},
            { type: "rating", name: "satisfaction", title: "How satisfied are you with the Product?", isRequired:  true,
                mininumRateDescription: "Not Satisfied", maximumRateDescription: "Completely satisfied" },
            { type: "rating", name: "recommend friends", visibleIf: "{satisfaction} > 3", 
                title: "How likely are you to recommend the Product to a friend or co-worker?", 
                mininumRateDescription: "Will not recommend", maximumRateDescription: "I will recommend" },
            { type: "comment", name: "suggestions", title:"What would make you more satisfied with the Product?", }
        {questions: [
            { type: "radiogroup", name: "price to competitors", 
                title: "Compared to our competitors, do you feel the Product is",
                choices: ["Less expensive", "Priced about the same", "More expensive", "Not sure"]},
            { type: "radiogroup", name: "price", title: "Do you feel our current price is merited by our product?",
                choices: ["correct|Yes, the price is about right", 
                        "low|No, the price is too low for your product", 
                        "high|No, the price is too high for your product"]},
            { type: "multipletext", name: "pricelimit", title: "What is the... ",
                items: [{ name: "mostamount", title: "Most amount you would every pay for a product like ours" },
                        { name: "leastamount", title: "The least amount you would feel comfortable paying" }]}
        { questions: [
                { type: "text", name: "email", 
                    title: "Thank you for taking our survey. Your survey is almost complete, please enter your email address in the box below if you wish to participate in our drawing, then press the 'Submit' button."}

                window.survey = new Survey.Model(json);
            survey.onComplete.add(function(sender) {
            document.querySelector('#surveyResult').textContent =
            "Result JSON:\n" + JSON.stringify(, null, 3);
var storageName = "SurveyJS_LoadState";
var timerId = 0;

function loadState(survey) {
    //Here should be the code to load the data from your database
    var storageSt = window.localStorage.getItem(storageName) || "";

    var res = {};
    if(storageSt) res = JSON.parse(storageSt);
    //Create the survey state for the demo. This line should be deleted in the real app.
    else res = { currentPageNo: 1, data: { "satisfaction":"4","Quality":{"does what it claims":"1"},"recommend friends":"3","price to competitors":"More expensive","price":"correct","pricelimit":{"mostamount":""}} };

    //Set the loaded data into the survey.
    if(res.currentPageNo) survey.currentPageNo = res.currentPageNo;
    if( =;

function saveState(survey) {
    var res = { currentPageNo: survey.currentPageNo, data:};
    //Here should be the code to save the data into your database
    window.localStorage.setItem(storageName, JSON.stringify(res));

survey.onCurrentPageChanged.add(function(survey, options){
survey.onComplete.add(function(sender, options) {
    //kill the timer
    //save the data on survey complete. You may call another function to store the final results

//Load the initial state

//save the data every 10 seconds, it is a good idea to change it to 30-60 seconds or more.
timerId = window.setInterval(function(){ saveState(survey);}, 10000);

<!DOCTYPE html>
<html lang="en">
    <title>Example of editing pre-saved or incompleted survey results, Knockoutjs Survey Library Example</title>

<meta name="viewport" content="width=device-width" />
    <script src=""></script>
    <script src="/DevBuilds/survey-knockout/survey.ko.min.js"></script>
    <link href="/DevBuilds/survey-core/modern.min.css" type="text/css" rel="stylesheet" />
    <link rel="stylesheet" href="./index.css">

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

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