Survey.StylesManager.applyTheme("bootstrap");
Survey.defaultBootstrapCss.navigationButton = "btn btn-green";
var json = {
"showQuestionNumbers": "off",
"elements": [
{
"type": "matrix",
"name": "matrix",
"title": "Please select the question you wish to answer",
"columns": [
{
"value": "yes",
"text": "Yes, I do"
},
{
"value": "no",
"text": "Please do not ask this question"
}
],
"rows": [
{
"value": "name",
"text": "Could you answer what is your name?"
},
{
"value": "city",
"text": "Could you tell us the city you have born?"
}
]
},
{
"type": "text",
"name": "name",
"title": "What is your name?",
"visibleIf": "{matrix.name} = 'yes'"
},
{
"type": "text",
"name": "city",
"title": "What is the city you have born?",
"visibleIf": "{matrix.city} = 'yes'"
}
]
};
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.render("surveyElement");
<!DOCTYPE html>
<html lang="en">
<head>
<title>Complex questions in expressions, Knockoutjs Survey Library Example</title>
<meta name="viewport" content="width=device-width" />
<script src="https://unpkg.com/knockout@3.5.1/build/output/knockout-latest.js"></script>
<script src="/DevBuilds/survey-core/survey.core.min.js"></script>
<script src="/DevBuilds/survey-core/survey.i18n.min.js"></script>
<script src="/DevBuilds/survey-knockout-ui/survey-knockout-ui.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/bootstrap@3.3.7/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="./index.css">
</head>
<body style="margin: 0">
<div id="surveyElement" style="display:inline-block;width:100%;">
</div>
<div id="surveyResult"></div>
<script type="text/javascript" src="./index.js"></script>
</body>
</html>
You may use the typical question value, for example "text", in an expression as:
visibileIf: "{textQuestion} = 'Yes'"For questions like Multiple Text, Matrix, Matrix Dropdown, Matrix Dynamic and Panel Dynamic you can't use the same approach.
"name": { "firstName": "John", "lastName": "Snow"}As result you may use it in expression as:
visibleIf: "{name.firstName} = 'John' and {name.lastName = 'Snow'}"
"rateTeaches": { "math": { "knowSubject": 5, "explainsClearly": 4}, "literature": { "knowSubject": 4, "explainsClearly": 4} }You may use it in expression as:
visibleIf: "{rateTeaches.math.explainsClearly} > 3}"
"rateTeaches": [{"subject": "math", "knowSubject": 5, "explainsClearly": 4}, {"subject": "literature", "knowSubject": 4, "explainsClearly": 4} ]The expression can be as:
visibleIf: "{rateTeaches[0].explainsClearly} > 3}"
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.
Approximate time to complete: 2 min.
Start the survey