Millisecond Forums

Forced quit and completion code on Inquisit Web

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

By deh - 8/17/2020

Hi,

I am running online Inquisit studies, and found that participants who quited in the middle of the study using (ctrl + Q) are redirected to the end of study page where the completion code is.
I don't want to fully pay participants who dropped in the middle of the study, so I hope only those who actually completed all the blocks to be redirected to the end of study page. Is there a way to solve this issue?

Thank you,
Da Eun
By Dave - 8/17/2020

deh - 8/17/2020
Hi,

I am running online Inquisit studies, and found that participants who quited in the middle of the study using (ctrl + Q) are redirected to the end of study page where the completion code is.
I don't want to fully pay participants who dropped in the middle of the study, so I hope only those who actually completed all the blocks to be redirected to the end of study page. Is there a way to solve this issue?

Thank you,
Da Eun

What you can do is implement a script.abort() condition if a CTRL+B (skipping a block) or CTRL+Q (quitting the experiment) response is detected during any of the trials:

<expt myexpt>
/ ontrialend = [
    if (expt.myexpt.response == "Ctrl+'Q'" || expt.myexpt.response == "Ctrl+'B'") {
        script.abort(true);
    };
]

/ blocks = [1=a; 2=b]
</expt>

<page aintro>
^This is block A.
</page>

<block a>
/ preinstructions = (aintro)
/ trials = [1-4 = atrial]
</block>

<page bintro>
^This is block B.
</page>

<block b>
/ preinstructions = (bintro)
/ trials = [1-4 = btrial]
</block>

<trial atrial>
/ stimulusframes = [1=atext]
/ validresponse = ("a", "b")
/ correctresponse = ("a")
</trial>

<trial btrial>
/ stimulusframes = [1=btext]
/ validresponse = ("a", "b")
/ correctresponse = ("b")
</trial>

<text atext>
/ items = ("Press A")
</text>

<text btext>
/ items = ("Press B")
</text>

<data>
/ columns = (date time subject group session blocknum blockcode trialnum trialcode stimulusitem response latency correct defaults.finishpage)
/ separatefiles = true
</data>

<summarydata>
/ columns = (script.startdate script.starttime script.subjectid script.groupid script.sessionid defaults.finishpage)
/ separatefiles = true
</summarydata>

This would not catch all offenders, specifically not those who skip or quit in a part of the procedure that doesn't formally detect responses (e.g. instruction pages), but I don't think there's any better or more comprehensive way.
Those fully completing the task will land on the finish page containing the confirmation code. Those who do quit or skip (with the caveat mentioned above), the script would just exit without any further action, i.e. no redirection to the finish page.

You can try the code out for yourself here: https://mili2nd.co/2kub
By deh - 8/17/2020

Dave - 8/18/2020
deh - 8/17/2020
Hi,

I am running online Inquisit studies, and found that participants who quited in the middle of the study using (ctrl + Q) are redirected to the end of study page where the completion code is.
I don't want to fully pay participants who dropped in the middle of the study, so I hope only those who actually completed all the blocks to be redirected to the end of study page. Is there a way to solve this issue?

Thank you,
Da Eun

What you can do is implement a script.abort() condition if a CTRL+B (skipping a block) or CTRL+Q (quitting the experiment) response is detected during any of the trials:

<expt myexpt>
/ ontrialend = [
    if (expt.myexpt.response == "Ctrl+'Q'" || expt.myexpt.response == "Ctrl+'B'") {
        script.abort(true);
    };
]

/ blocks = [1=a; 2=b]
</expt>

<page aintro>
^This is block A.
</page>

<block a>
/ preinstructions = (aintro)
/ trials = [1-4 = atrial]
</block>

<page bintro>
^This is block B.
</page>

<block b>
/ preinstructions = (bintro)
/ trials = [1-4 = btrial]
</block>

<trial atrial>
/ stimulusframes = [1=atext]
/ validresponse = ("a", "b")
/ correctresponse = ("a")
</trial>

<trial btrial>
/ stimulusframes = [1=btext]
/ validresponse = ("a", "b")
/ correctresponse = ("b")
</trial>

<text atext>
/ items = ("Press A")
</text>

<text btext>
/ items = ("Press B")
</text>

<data>
/ columns = (date time subject group session blocknum blockcode trialnum trialcode stimulusitem response latency correct defaults.finishpage)
/ separatefiles = true
</data>

<summarydata>
/ columns = (script.startdate script.starttime script.subjectid script.groupid script.sessionid defaults.finishpage)
/ separatefiles = true
</summarydata>

This would not catch all offenders, specifically not those who skip or quit in a part of the procedure that doesn't formally detect responses (e.g. instruction pages), but I don't think there's any better or more comprehensive way.
Those fully completing the task will land on the finish page containing the confirmation code. Those who do quit or skip (with the caveat mentioned above), the script would just exit without any further action, i.e. no redirection to the finish page.

You can try the code out for yourself here: https://mili2nd.co/2kub

Thank you! It worked out beautifully.