首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在LimeSurvey中编写代码,以便只有在填充了上一行时才会出现新行

如何在LimeSurvey中编写代码,以便只有在填充了上一行时才会出现新行
EN

Stack Overflow用户
提问于 2013-10-16 22:04:26
回答 4查看 5K关注 0票数 0

我正在使用LimeSurvey,我想包括一个问题,答辩人可以包括多达30个名字作为答案。然而,我不想在一开始就向答辩人展示30个盒子,因为这是压倒性的,如果你只有几个名字要输入的话,需要大量滚动才能进行。是否可以对问题进行编码,以便只有在填充了前一个框后才会出现一个新框?谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-08 17:58:28

编辑:这个答案是写出来的,因为我找不到tpartner事先提出的答案。主要的区别是,我的是基于填写上一行和tpartner的on按钮来添加或删除行。

下面的代码应该适用于所有单一选择的数组(例如,5点比例数组),并且如果您知道Javascript/jQuery,则可以适用于其他类型。我想做更多这样的事-只是今天不行。因此,可以自由地请求其他问题类型的实现。

可以使用模板编辑器在template.js文件的开头添加代码。变量“探索”和“第一”必须根据你的调查来调整。

代码语言:javascript
复制
//Function to only display a new row if there is an answer in the previous row
//NOTICE: Rows which are reset to "No answer" will not be hidden
//NOTICE: This scipt was written based on LimeSurvey 2.00+ build 131107
//NOTICE: It only works for single-choice arrays (e.g. 5-point scale array) or multiple short texts
//BEGIN
$(document).ready( function() {
    //SGQ code of the question to apply this to
    var quest = "12345X1234X12345";
    //A(nswer) code of the first row
    var first = "1";

    //hide all rows except the first
    $("tr[id^='javatbd" + quest + "']").css("display","none");
    $("tr[id='javatbd" + quest + first + "']").css("display","table-row");

    //display rows if previous is answered
    $("[name^='" + quest + "']").change(function() {
        if(this.value.trim().length >= 1)
            $("tr[id='javatbd" + this.name + "']").next().css("display","table-row");
    });
});
//END

诚挚的问候

票数 1
EN

Stack Overflow用户

发布于 2014-01-09 13:02:43

下面是另一种使用按钮添加/删除数组行的方法- question

干杯

票数 3
EN

Stack Overflow用户

发布于 2013-10-17 21:28:28

你打算用哪种类型的问题?你最好的选择,根据我,应该是使用多个简短的文本类型的问题,并创建30个文本框。然后,您可以使用javascript隐藏这些文本框,并在前面的文本框作为输入时立即显示它们。

干杯!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19414760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档