Survey.defaultBootstrapCss.navigationButton = "btn btn-green"; Survey.Survey.cssType = "bootstrap"; Survey.JsonObject.metaData.addProperty("checkbox", { name: "renderAs", default: "standard", choices: ["standard", "nouislider"] }); var survey = new Survey.Model({ questions: [{ type: "checkbox", renderAs: "nouislider", name: "range", title: "Set a value range" }] }); var widget = { name: "nouislider", htmlTemplate: "<div id='slider'></div>", isFit: function(question) { return question["renderAs"] === 'nouislider'; }, afterRender: function(question, el) { var slider = el.querySelector("#slider"); noUiSlider.create(slider, { start: (question.value && question.value.length) ? question.value : [30, 70], connect: true, pips: { mode: 'steps', stepped: true, density: 4 }, range: { 'min': 0, 'max': 100 } }); slider.noUiSlider.on('set', function() { question.value = slider.noUiSlider.get(); }); }, willUnmount: function(question, el) { var slider = el.querySelector("#slider"); slider.noUiSlider.destroy(); } } Survey.CustomWidgetCollection.Instance.addCustomWidget(widget); survey.data = { range: ["20.00", "80.00"] }; survey.onComplete.add(function(result) { document.querySelector('#result').innerHTML = "result: " + JSON.stringify(result.data); }); $("#surveyElement").Survey({ model: survey });
<div id="surveyElement"></div> <div id="result"></div>
#slider { margin-bottom:50px; .noUi-connect { background: #1ab394; } } .btn-green { background-color: #1ab394; color: #fff; border-radius: 3px; &:hover, &:focus { background-color: #18a689; color: #fff; } } .panel-footer { text-align: right; background-color: #fff; }