oTree Forum >

On how to use an "and" function for error messages -

#1 by Tedquestion

Hi Chris and all,

I am trying to figure out a way to show error messages when participants answer two questions that contradict to each other. For now, I have figured out a way to show an error message for a single question. For example, if a participant answered "A" for a question that requires an answer "B," a real-time message as below shows:
 
def quiz1_error_message(player, value):
print('value is', value)
if value != 'T':
    return "Your answer is incorrect. Generating a positive return is important because Oval uses the returns to help fund operations in subsequent years. Please try again." 
    
    
I am trying to expand the above coding to "two questions" as in, if one answered Question 1 AND Question 2 in a contradicting way, show a real-time message. So, if a participant answered Question 1 AND Question 2 both A, assuming this is a contradicting response, there is an error message to fix the response.

Does anyone have any idea how to solve this issue?

Thanks in advance!

#2 by Chris_oTree

Use the error_message function on the page: https://otree.readthedocs.io/en/latest/forms.html#validating-multiple-fields-together

@staticmethod
def error_message(player, values):
    if values['quiz1'] == 'A' and values['quiz2'] == 'A':
        return "This is a contradictory response"

This will show the error message at the top of the page. If you want to show these messages inline, return a dict:

@staticmethod
def error_message(player, values):
    if values['quiz1'] == 'A' and values['quiz2'] == 'A':
        return dict(quiz1="Error message for field 1", quiz2="Error message for field 2")

#3 by Tedquestion

Works perfect!

Thanks, Chris :)

Write a reply

Set forum username