Millisecond Forums

command /required=true does not work for questions included in blocks

https://forums.millisecond.com/Topic7537.aspx

By Giulio - 2/28/2012

Hi,


I'm experiencing some problems in using command /required.


I want subjects to respond to some radiobuttons, and these radiobuttons are included in surveypages, that are in turn included in blocks elements (and cannot be included in survey elements). Each block is called many times (50 in the original script). I specify /required=true at the level of the radiobutton: this works well only the first time the block is called, but for the following times if the subject does not respond, the script does not forces him to answare before going on.


By inspecting the output I realized that Inquisit keeps in memory the latest answare to the radiobutton, and if the subject skips the question, Inquisit behaves such as the subject had given the same answare as before.


The problem have been solved in Inquisit 4, but I do not want to use a beta version, because I have to test many subjects in a single lab session, and it would be a big issue for me if something went wrong.


Is there any way to fix it in inquisit 3.0.6.0, at the level of the script? (e.g., some trick to flush inquisit memory before a new block begins?)


Here I post a brief script that reproduces the problem


__________________



<expt>


/ blocks = [1-10=block1]


</expt>



<block block1>


/ trials = [1=surveypage1]


</block>



<surveypage surveypage1>


/ questions = [1=radiobuttons1]


</surveypage>



<radiobuttons radiobuttons1>


/ caption = "A mandatory question"


/ options = ("option1", "option2")


/ orientation = vertical


/ required = true


</radiobuttons>


___________________



Thank you,


Giulio

By Dave - 2/28/2012

Is there any way to fix it in inquisit 3.0.6.0, at the level of the script? (e.g., some trick to flush inquisit memory before a new block begins?)


Unfortunately there isn't. All you can do is set up 50 *different* <radiobuttons>, etc. elements, so that every element is only run once across the whole script.

By Giulio - 2/28/2012

Thank you for answering so fast.


Ok, I'll use the 50 radiobuttons and wait for an official relase of Inquisit 4:)

By jmwotw - 9/19/2012

So just to clarify, is it only the radiobuttons that need to be unique for each question, only the survey pages that have to be unique, or both?  We have questions that vary in terms of the number of responses that are displayed for each question so we branch from an initial surveypage to a second surveypage that includes the radiobutton with the appropriate number of responses (and the formatting):




<surveypage test_trials_part1>


/ questions = [1 = caption_macro]


   / stimulustimes = [1= within_block_progress_report, item_index_report, block_report, caption_report, buttons_report]


   / branch =    [if (values.radiobuttonsneeded == 1) surveypage.test_trials_part2a]


   / branch =    [if (values.radiobuttonsneeded == 2) surveypage.test_trials_part2b]


...


</surveypage>



<surveypage test_trials_part2b>


   / questions = [1 = radiobutton_1b; 2 = prompts]


   / stimulustimes = [1=picture_macrovar]


</surveypage>




<radiobuttons radiobutton_1b>


   / caption = "Acceptable Responses       "


   / options = ("WRONG" , 


               "<% getitem(counter.option1,values.item_index) %>" , 


               "<% getitem(counter.option2, values.item_index) %>") 


   / other = "Other"


/ required =  true


   </radiobuttons>



The reason I ask is that we have 400-600 items that we are creating (then administering a subset to each participant), and if both are required uniquely, then that means we've just expanded our 2 surveypage and 5 radiobutton elements to 400-600 of each.  Yikes!



Thanks,


Jeff



By Dave - 9/19/2012

So just to clarify, is it only the radiobuttons that need to be unique for each question, only the survey pages that have to be unique, or both?


Both (unless I'm terribly mistaken). But you should be able to test that for yourself without much effort. A minimal test case would be


<block myblock>
/ trials = [1=pg1; 2=pg2]
</block>

<surveypage pg1>
/ questions = [1=q1]
</surveypage>

<surveypage pg2>
/ questions = [1=q1]
</surveypage>

<radiobuttons q1>
/ caption = "You should not  be able to move on without answering me. However, if you reuse me on multiple pages, that won't work."
/ options = ("A","B")
/ required = true
</radiobuttons>


If you can submit the 2nd page without providing a response to q1 (which is what actually happens), you have your answer. You can't reuse questions on multiple pages if you need to rely on /required=true, unfortunately.