Survey.StylesManager.applyTheme("modern");
//add file type into matrix columns (run-time)
Survey.matrixDropdownColumnTypes.file = {};
//add tagbox into matrix columns (run-time)
Survey.matrixDropdownColumnTypes.tagbox = {
onCellQuestionUpdate: function(cellQuestion, column, question, data) {
Survey.matrixDropdownColumnTypes.checkbox.onCellQuestionUpdate(cellQuestion, column, question, data);
}
};
var json = {
"elements": [
{
"type": "matrixdynamic",
"name": "sendHomework",
"title": "Please send your homework",
"addRowText": "Add Subject",
"columns": [
{
"name": "subjects",
"cellType": "tagbox",
"title": "Select a subject(s)",
"isRequired": true,
"choices": [ "English: American Literature", "English: British and World Literature", "Math: Consumer Math", "Math: Practical Math", "Math: Developmental Algebra", "Math: Continuing Algebra", "Math: Pre-Algebra", "Math: Algebra", "Math: Geometry", "Math: Integrated Mathematics", "Science: Physical Science", "Science: Earth Science", "Science: Biology", "Science: Chemistry", "History: World History", "History: Modern World Studies", "History: U.S. History", "History: Modern U.S. History", "Social Sciences: U.S. Government and Politics", "Social Sciences: U.S. and Global Economics", "World Languages: Spanish", "World Languages: French", "World Languages: German", "World Languages: Latin", "World Languages: Chinese", "World Languages: Japanese" ]
},
{
"name": "file",
"cellType": "file",
"title": "Please upload your document"
},
{
"name": "description",
"cellType": "comment",
"title": "Please describe your homework"
}
],
"rowCount": 1
}
]
}
;
window.survey = new Survey.Model(json);
survey.onComplete.add(function(sender) {
document.querySelector('#surveyResult').textContent =
"Result JSON:\n" + JSON.stringify(sender.data, null, 3);
});
var app = new Vue({
el: '#surveyElement',
data:
{
survey: survey
}
});
<!DOCTYPE html>
<html lang="en">
<head>
<title>Matrix - Custom cell types, Vue Survey Library Example</title>
<meta name="viewport" content="width=device-width" />
<script src="https://unpkg.com/jquery"></script>
<script src="https://unpkg.com/vue@2.6.14/dist/vue.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-vue-ui/survey-vue-ui.min.js"></script>
<link href="/DevBuilds/survey-core/modern.min.css" type="text/css" rel="stylesheet" />
<link rel="stylesheet" href="./index.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.4/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.4/css/select2.min.css" rel="stylesheet" />
<script src="/DevBuilds/surveyjs-widgets/surveyjs-widgets.min.js"></script>
</head>
<body style="margin: 0">
<div id="surveyElement" style="display:inline-block;width:100%;">
<survey :survey='survey' />
</div>
<div id="surveyResult"></div>
<script type="text/javascript" src="./index.js"></script>
</body>
</html>
You may add/remove cell types for matrix dropdown/dynamic by using Survey.matrixDropdownColumnTypes variable.
//delete comment cell type delete Survey.matrixDropdownColumnTypes.comment //Add file cell type. File question properties will be added dynamically, based on properties definition in Serilizer Survey.matrixDropdownColumnTypes.file = {};
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 SurveyApproximate time to complete: 2 min.