+xHi,
The high level problem that I am trying to solve is that I have a scale with 20 items that I want to randomly distribute over 4 survey pages with 5 items per page.
I found this forum post from a while back that I thought provided an approach that would work:
https://www.millisecond.com/forums/Topic11044.aspx
That approach is to define a number of survey items (in this case, radiobuttons elements) and store them in a list.
Then, I would reference that list in the questions attribute of the four surveypages.
Near the end of that thread, it looks like they discover a bug that prevents Inquisit from saving responses.
After some experimentation, I think I got this approach to work in terms of user interaction, but I may be running into the same bug saving data.
Below is my test code which runs for me in version 5.0.7.0. For simplicity, there are only four questions presented over two pages.
I did verify that other, simpler surveys successfully save data for me.
Any idea about what is going on or suggestions to solve this problem some other way would be welcome.
Thanks!
<survey myscale>
/ pages = [1 = scale1; 2 = scale2]
/ showpagenumbers = false
/ itemfontstyle = ("Times New Roman", 12pt, false, false, false, false, 5, 0)
/ responsefontstyle = ("Lucida Console", 7pt, false, false, false, false, 5, 0)
</survey>
<surveypage scale1>
/ questions = [
1 = list.scale;
2 = list.scale;
]
/ showquestionnumbers = false
/ showbackbutton = false
/ nextbuttonposition = (90%, 90%)
</surveypage>
<surveypage scale2>
/ questions = [
1 = list.scale;
2 = list.scale;
]
/ showquestionnumbers = false
/ showbackbutton = false
/ nextbuttonposition = (90%, 90%)
</surveypage>
<list scale>
/ items = (
radiobuttons.item01,
radiobuttons.item02,
radiobuttons.item03,
radiobuttons.item04)
/ selectionmode = random
/ selectionrate = always
</list>
<radiobuttons item01>
/ caption = "Item 01 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<radiobuttons item02>
/ caption = "Item 02 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<radiobuttons item03>
/ caption = "Item 03 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<radiobuttons item04>
/ caption = "Item 04 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
The <list> approach sadly won't work like that (for boring technical reasons), but here are two options that should work:
#1: A slight extension of the <list> approach that captures the responses via <summarydata>:
<survey myscale>
/ pages = [1 = scale1; 2 = scale2]
/ showpagenumbers = false
/ itemfontstyle = ("Times New Roman", 12pt, false, false, false, false, 5, 0)
/ responsefontstyle = ("Lucida Console", 7pt, false, false, false, false, 5, 0)
</survey>
<surveypage scale1>
/ questions = [
1 = list.scale;
2 = list.scale;
]
/ showquestionnumbers = false
/ showbackbutton = false
/ nextbuttonposition = (90%, 90%)
</surveypage>
<surveypage scale2>
/ questions = [
1 = list.scale;
2 = list.scale;
]
/ showquestionnumbers = false
/ showbackbutton = false
/ nextbuttonposition = (90%, 90%)
</surveypage>
<list scale>
/ items = (
radiobuttons.item01,
radiobuttons.item02,
radiobuttons.item03,
radiobuttons.item04)
/ selectionmode = random
/ selectionrate = always
</list>
<radiobuttons item01>
/ caption = "Item 01 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<radiobuttons item02>
/ caption = "Item 02 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<radiobuttons item03>
/ caption = "Item 03 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<radiobuttons item04>
/ caption = "Item 04 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<summarydata>
/ columns = (script.startdate script.starttime script.subjectid script.groupid
radiobuttons.item01.response radiobuttons.item02.response radiobuttons.item03.response radiobuttons.item04.response)
/ separatefiles = true
</summarydata>
#2: Using a <block>, a single <surveypage> and a noreplace() selection pool for the four questions:
<block myscale>
/ trials = [1-2 = scale]
</block>
<surveypage scale>
/ questions = [1,2 = noreplace(item01,item02,item03,item04)]
/ showquestionnumbers = false
/ showbackbutton = false
/ nextbuttonposition = (90%, 90%)
/ showpagenumbers = false
/ itemfontstyle = ("Times New Roman", 12pt, false, false, false, false, 5, 0)
/ responsefontstyle = ("Lucida Console", 7pt, false, false, false, false, 5, 0)
</surveypage>
<radiobuttons item01>
/ caption = "Item 01 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<radiobuttons item02>
/ caption = "Item 02 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<radiobuttons item03>
/ caption = "Item 03 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>
<radiobuttons item04>
/ caption = "Item 04 text"
/ options = ("Strongly disagree", " ", " ", " ", " ", " ", "Strongly agree")
/ optionvalues = ("1", "2", "3", "4", "5", "6", "7")
/ orientation = horizontalequal
/ required = false
</radiobuttons>