SurveyJS 如何根据前置问题的回答动态修改后续问题的标题
SurveyJS 动态修改问题标题实现方案
方法1:使用内置表达式(无需额外JS代码,推荐)
SurveyJS 支持在title属性中直接使用{问题name}引用其他问题的答案,配合三元表达式就能直接实现逻辑:
- 先给第一个单选问题设置
name属性为q1(可自定义,和后续引用对应即可) - 第二个问题的
title直接配置如下表达式即可,完整问卷配置示例:
{ "elements": [ { "type": "radiogroup", "name": "q1", "title": "请选择选项", "choices": [ "TRUE", "FALSE" ] }, { "type": "text", "name": "q2", "title": "{q1} = 'TRUE' ? 'What is your age?' : 'How old are you?'" } ] }
内置表达式会自动监听q1的取值变化,实时更新第二题的标题,不需要额外编写逻辑代码。
方法2:使用onValueChanged事件监听
如果后续还有更复杂的联动逻辑,可以用Survey实例的事件回调实现:
// 初始化Survey实例后绑定事件 survey.onValueChanged.add(function(sender, options) { // 判断修改的是第一题 if(options.name === 'q1') { const q2 = sender.getQuestionByName('q2'); if(options.value === 'TRUE') { q2.title = 'What is your age?'; } else { q2.title = 'How old are you?'; } } });
两种方法都能实现需求,方法1配置更简单,方法2扩展性更强。
内容的提问来源于stack exchange,提问作者lucia
相关产品推荐
相关产品推荐

