Inserting a Live Checkbox Counter


Author
Message
vicki.rivera
vicki.rivera
Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)
Group: Forum Members
Posts: 13, Visits: 43
Dave - 4/29/2025
vicki.rivera - 4/29/2025
Dave - 4/29/2025
vicki.rivera - 4/29/2025
Hello!
I am designing a study where participants see a list of about 200 traits and have to select 80 in order to continue. I am using the checkboxes element so that they can make multiple selections. I also have the traits spread over 4 different checkboxes, so that I could create multiple columns. They are shown an error message if they do not select 80 traits. I wanted to know if:
1. There is a way to insert a live counter which would show the participant how many traits they've already selected. For example, if they've selected 10 traits so far the counter would show 10 on the screen. 
2. If not, then is there a way to make sure that the participants maintain their previously selected choices after viewing the error message? Right now, they see the error message, and are then routed back to the survey page, but lose all of their previous selections.
I appreciate any advice! Here is the script which contains all of the relevant elements for this task:

<surveypage X_traits_1>
/ caption = "Choose 80 traits that best describe <%item.novelperson.item(values.personXnumber)%>..."
/ questions = [1 = X_traits_1; 2 = X_traits_2; 3 = X_traits_3; 4 = X_traits_4]
/ nextbuttonposition = (75%, 260%)
/ showpagenumbers = false
/ branch = [if ((checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount) != 80) trial.error_1]
/ stimulusframes = [1=selectedcount1]
</surveypage>

<text selectedcount1>
/ items = ("<%checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount%>")
/ position = (85%, 10%)
</text>

<checkboxes X_traits_1>
/ options = ("smart", "funny", "friendly", "fun", "kind", "outgoing", "talented", "adventurous",
"interesting", "nice", "driven", "social", "athletic", "creative", "extraverted", "hardworking",
"involved", "honest", "organized", "caring", "independent", "open-minded", "positive", "thoughtful",
"approachable",
"careless", "boring", "disorganized", "rude", "lazy", "indecisive", "quiet", "pessimistic", "annoying",
"dumb", "arrogant", "unfocused", "unfriendly", "impulsive", "selfish", "serious", "unsure", "weird",
"basic", "distracted", "judgmental", "loud", "meek", "messy", "aloof", "antisocial", "awkward",
"close-minded", "conceited", "crude")
/ position = (15%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_2>
/ options = ("brave", "calm", "carefree", "easygoing", "happy", "humble", "joyful", "motivated", "passionate",
"analytical", "chill", "confident", "diligent", "engaged", "goal-focused", "loyal", "personable",
"respectful", "studious", "well-spoken", "accepting", "accomplished", "active", "adaptable", "affable",
"egocentric", "hasty", "immature", "impatient", "inconsistent", "insecure", "negative", "obnoxious", "overbearing",
"regretful", "rigid", "try-hard", "vague", "bothered", "braggy", "busy", "chaotic", "cliquish",
"cold", "competitive", "condescending", "confusing", "cowardly", "crazy", "cynical", "demeaning", "detached",
"disrespectful", "distant", "ditzy")
/ position = (35%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_3>
/ options = ("amazing", "ambitious", "artistic", "aware", "balanced", "careful", "compassionate", "cultured",
"curious", "deep-thinker", "descriptive", "direct", "eager", "engaging", "entertaining", "explorative",
"future-focused", "genuine", "hardworker", "healthy", "interactive", "laid-back", "leader", "likeable",
"mature",
"dry", "dull", "eccentric", "fearful", "flustered", "foolish", "forgetful", "frivolous", "generic",
"guarded", "hesitant", "ignorant", "inactive", "indifferent", "insincere", "intimidating", "introvert", "irresponsible",
"irritating", "jealous", "kill-joy", "lonely", "nerdy", "one-dimensional", "overconfident", "overwhelmed", "overwhelming",
"preoccupied", "reckless", "regular")
/ position = (55%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_4>
/ options = ("mindful", "normal", "opportunist", "outdoorsy", "peaceful", "planner", "quirky", "realistic",
"relaxed", "reliable", "resilient", "responsible", "self-aware", "sociable", "spirited", "stable",
"supportive", "thorough", "truthful", "understanding", "visionary", "well-mannered", "well-rounded", "wise",
"risky", "self-absorbed", "shallow", "simple", "snobbish", "stressed", "stringent", "stupid", "tired",
"typical", "unapproachable", "uncharming", "uncool", "unenergetic", "unexciting", "unimaginable", "unintellectual", "unintelligent",
"uninteresting", "uninvolved", "unmotivated", "unorganized", "unoriginal", "unproductive", "unserious", "untalkative")
/ position = (75%, 15%)
/ order = random
/ required = false
</checkboxes>

<text error>
/ items = ("You must select 80 traits.")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

<text back>
/ items = ("<< Go Back")
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3%, false, false, true, false, 5, 0)
/ txcolor = blue
</text>

<trial error_1>
/ stimulusframes = [1=error, back]
/ correctresponse = (back)
/ inputdevice = mouse
/ branch = [if (trial.error_1.correctstreak >= 1) surveypage.X_traits_1]
</trial>

> 1. There is a way to insert a live counter which would show the participant how many traits they've already selected. For example, if they've selected 10 traits so far the counter would show 10 on the screen.

No.

> 2. If not, then is there a way to make sure that the participants maintain their previously selected choices after viewing the error message? Right now, they see the error message, and are then routed back to the survey page, but lose all of their previous selections.

Use a <survey> to run the page, not a <block>. That, however, means you'll have to use a <surveypage> to display the error message, not a <trial>.

<surveypage X_traits_1>
/ caption = "Choose 80 traits that best describe..."
/ questions = [1 = X_traits_1; 2 = X_traits_2; 3 = X_traits_3; 4 = X_traits_4]
/ nextbuttonposition = (75%, 260%)
/ showpagenumbers = false
/ branch = [if ((checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount) != 80) surveypage.error_1]
</surveypage>

<checkboxes X_traits_1>
/ options = ("smart", "funny", "friendly", "fun", "kind", "outgoing", "talented", "adventurous",
"interesting", "nice", "driven", "social", "athletic", "creative", "extraverted", "hardworking",
"involved", "honest", "organized", "caring", "independent", "open-minded", "positive", "thoughtful",
"approachable",
"careless", "boring", "disorganized", "rude", "lazy", "indecisive", "quiet", "pessimistic", "annoying",
"dumb", "arrogant", "unfocused", "unfriendly", "impulsive", "selfish", "serious", "unsure", "weird",
"basic", "distracted", "judgmental", "loud", "meek", "messy", "aloof", "antisocial", "awkward",
"close-minded", "conceited", "crude")
/ position = (15%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_2>
/ options = ("brave", "calm", "carefree", "easygoing", "happy", "humble", "joyful", "motivated", "passionate",
"analytical", "chill", "confident", "diligent", "engaged", "goal-focused", "loyal", "personable",
"respectful", "studious", "well-spoken", "accepting", "accomplished", "active", "adaptable", "affable",
"egocentric", "hasty", "immature", "impatient", "inconsistent", "insecure", "negative", "obnoxious", "overbearing",
"regretful", "rigid", "try-hard", "vague", "bothered", "braggy", "busy", "chaotic", "cliquish",
"cold", "competitive", "condescending", "confusing", "cowardly", "crazy", "cynical", "demeaning", "detached",
"disrespectful", "distant", "ditzy")
/ position = (35%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_3>
/ options = ("amazing", "ambitious", "artistic", "aware", "balanced", "careful", "compassionate", "cultured",
"curious", "deep-thinker", "descriptive", "direct", "eager", "engaging", "entertaining", "explorative",
"future-focused", "genuine", "hardworker", "healthy", "interactive", "laid-back", "leader", "likeable",
"mature",
"dry", "dull", "eccentric", "fearful", "flustered", "foolish", "forgetful", "frivolous", "generic",
"guarded", "hesitant", "ignorant", "inactive", "indifferent", "insincere", "intimidating", "introvert", "irresponsible",
"irritating", "jealous", "kill-joy", "lonely", "nerdy", "one-dimensional", "overconfident", "overwhelmed", "overwhelming",
"preoccupied", "reckless", "regular")
/ position = (55%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_4>
/ options = ("mindful", "normal", "opportunist", "outdoorsy", "peaceful", "planner", "quirky", "realistic",
"relaxed", "reliable", "resilient", "responsible", "self-aware", "sociable", "spirited", "stable",
"supportive", "thorough", "truthful", "understanding", "visionary", "well-mannered", "well-rounded", "wise",
"risky", "self-absorbed", "shallow", "simple", "snobbish", "stressed", "stringent", "stupid", "tired",
"typical", "unapproachable", "uncharming", "uncool", "unenergetic", "unexciting", "unimaginable", "unintellectual", "unintelligent",
"uninteresting", "uninvolved", "unmotivated", "unorganized", "unoriginal", "unproductive", "unserious", "untalkative")
/ position = (75%, 15%)
/ order = random
/ required = false
</checkboxes>

<text error>
/ items = ("You must select 80 traits.")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

<surveypage error_1>
/ stimulusframes = [1=error]
/ branch = [surveypage.X_traits_1]
/ showbackbutton = false
/ finishlabel = "Back"
</surveypage>

<survey example>
/ pages = [1=surveypage.X_traits_1]
/ showpagenumbers = false
/ showquestionnumbers = false
</survey>

This worked! Thank you.

By the way, you can make the error message friendlier / more informative by including the number of traits currently selected.

<text error>
/ items = ("You must select 80 traits.
(You currently have <%checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount%> selected.)")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>
Yes! This helps, thank you.

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 107K
vicki.rivera - 4/29/2025
Dave - 4/29/2025
vicki.rivera - 4/29/2025
Hello!
I am designing a study where participants see a list of about 200 traits and have to select 80 in order to continue. I am using the checkboxes element so that they can make multiple selections. I also have the traits spread over 4 different checkboxes, so that I could create multiple columns. They are shown an error message if they do not select 80 traits. I wanted to know if:
1. There is a way to insert a live counter which would show the participant how many traits they've already selected. For example, if they've selected 10 traits so far the counter would show 10 on the screen. 
2. If not, then is there a way to make sure that the participants maintain their previously selected choices after viewing the error message? Right now, they see the error message, and are then routed back to the survey page, but lose all of their previous selections.
I appreciate any advice! Here is the script which contains all of the relevant elements for this task:

<surveypage X_traits_1>
/ caption = "Choose 80 traits that best describe <%item.novelperson.item(values.personXnumber)%>..."
/ questions = [1 = X_traits_1; 2 = X_traits_2; 3 = X_traits_3; 4 = X_traits_4]
/ nextbuttonposition = (75%, 260%)
/ showpagenumbers = false
/ branch = [if ((checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount) != 80) trial.error_1]
/ stimulusframes = [1=selectedcount1]
</surveypage>

<text selectedcount1>
/ items = ("<%checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount%>")
/ position = (85%, 10%)
</text>

<checkboxes X_traits_1>
/ options = ("smart", "funny", "friendly", "fun", "kind", "outgoing", "talented", "adventurous",
"interesting", "nice", "driven", "social", "athletic", "creative", "extraverted", "hardworking",
"involved", "honest", "organized", "caring", "independent", "open-minded", "positive", "thoughtful",
"approachable",
"careless", "boring", "disorganized", "rude", "lazy", "indecisive", "quiet", "pessimistic", "annoying",
"dumb", "arrogant", "unfocused", "unfriendly", "impulsive", "selfish", "serious", "unsure", "weird",
"basic", "distracted", "judgmental", "loud", "meek", "messy", "aloof", "antisocial", "awkward",
"close-minded", "conceited", "crude")
/ position = (15%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_2>
/ options = ("brave", "calm", "carefree", "easygoing", "happy", "humble", "joyful", "motivated", "passionate",
"analytical", "chill", "confident", "diligent", "engaged", "goal-focused", "loyal", "personable",
"respectful", "studious", "well-spoken", "accepting", "accomplished", "active", "adaptable", "affable",
"egocentric", "hasty", "immature", "impatient", "inconsistent", "insecure", "negative", "obnoxious", "overbearing",
"regretful", "rigid", "try-hard", "vague", "bothered", "braggy", "busy", "chaotic", "cliquish",
"cold", "competitive", "condescending", "confusing", "cowardly", "crazy", "cynical", "demeaning", "detached",
"disrespectful", "distant", "ditzy")
/ position = (35%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_3>
/ options = ("amazing", "ambitious", "artistic", "aware", "balanced", "careful", "compassionate", "cultured",
"curious", "deep-thinker", "descriptive", "direct", "eager", "engaging", "entertaining", "explorative",
"future-focused", "genuine", "hardworker", "healthy", "interactive", "laid-back", "leader", "likeable",
"mature",
"dry", "dull", "eccentric", "fearful", "flustered", "foolish", "forgetful", "frivolous", "generic",
"guarded", "hesitant", "ignorant", "inactive", "indifferent", "insincere", "intimidating", "introvert", "irresponsible",
"irritating", "jealous", "kill-joy", "lonely", "nerdy", "one-dimensional", "overconfident", "overwhelmed", "overwhelming",
"preoccupied", "reckless", "regular")
/ position = (55%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_4>
/ options = ("mindful", "normal", "opportunist", "outdoorsy", "peaceful", "planner", "quirky", "realistic",
"relaxed", "reliable", "resilient", "responsible", "self-aware", "sociable", "spirited", "stable",
"supportive", "thorough", "truthful", "understanding", "visionary", "well-mannered", "well-rounded", "wise",
"risky", "self-absorbed", "shallow", "simple", "snobbish", "stressed", "stringent", "stupid", "tired",
"typical", "unapproachable", "uncharming", "uncool", "unenergetic", "unexciting", "unimaginable", "unintellectual", "unintelligent",
"uninteresting", "uninvolved", "unmotivated", "unorganized", "unoriginal", "unproductive", "unserious", "untalkative")
/ position = (75%, 15%)
/ order = random
/ required = false
</checkboxes>

<text error>
/ items = ("You must select 80 traits.")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

<text back>
/ items = ("<< Go Back")
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3%, false, false, true, false, 5, 0)
/ txcolor = blue
</text>

<trial error_1>
/ stimulusframes = [1=error, back]
/ correctresponse = (back)
/ inputdevice = mouse
/ branch = [if (trial.error_1.correctstreak >= 1) surveypage.X_traits_1]
</trial>

> 1. There is a way to insert a live counter which would show the participant how many traits they've already selected. For example, if they've selected 10 traits so far the counter would show 10 on the screen.

No.

> 2. If not, then is there a way to make sure that the participants maintain their previously selected choices after viewing the error message? Right now, they see the error message, and are then routed back to the survey page, but lose all of their previous selections.

Use a <survey> to run the page, not a <block>. That, however, means you'll have to use a <surveypage> to display the error message, not a <trial>.

<surveypage X_traits_1>
/ caption = "Choose 80 traits that best describe..."
/ questions = [1 = X_traits_1; 2 = X_traits_2; 3 = X_traits_3; 4 = X_traits_4]
/ nextbuttonposition = (75%, 260%)
/ showpagenumbers = false
/ branch = [if ((checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount) != 80) surveypage.error_1]
</surveypage>

<checkboxes X_traits_1>
/ options = ("smart", "funny", "friendly", "fun", "kind", "outgoing", "talented", "adventurous",
"interesting", "nice", "driven", "social", "athletic", "creative", "extraverted", "hardworking",
"involved", "honest", "organized", "caring", "independent", "open-minded", "positive", "thoughtful",
"approachable",
"careless", "boring", "disorganized", "rude", "lazy", "indecisive", "quiet", "pessimistic", "annoying",
"dumb", "arrogant", "unfocused", "unfriendly", "impulsive", "selfish", "serious", "unsure", "weird",
"basic", "distracted", "judgmental", "loud", "meek", "messy", "aloof", "antisocial", "awkward",
"close-minded", "conceited", "crude")
/ position = (15%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_2>
/ options = ("brave", "calm", "carefree", "easygoing", "happy", "humble", "joyful", "motivated", "passionate",
"analytical", "chill", "confident", "diligent", "engaged", "goal-focused", "loyal", "personable",
"respectful", "studious", "well-spoken", "accepting", "accomplished", "active", "adaptable", "affable",
"egocentric", "hasty", "immature", "impatient", "inconsistent", "insecure", "negative", "obnoxious", "overbearing",
"regretful", "rigid", "try-hard", "vague", "bothered", "braggy", "busy", "chaotic", "cliquish",
"cold", "competitive", "condescending", "confusing", "cowardly", "crazy", "cynical", "demeaning", "detached",
"disrespectful", "distant", "ditzy")
/ position = (35%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_3>
/ options = ("amazing", "ambitious", "artistic", "aware", "balanced", "careful", "compassionate", "cultured",
"curious", "deep-thinker", "descriptive", "direct", "eager", "engaging", "entertaining", "explorative",
"future-focused", "genuine", "hardworker", "healthy", "interactive", "laid-back", "leader", "likeable",
"mature",
"dry", "dull", "eccentric", "fearful", "flustered", "foolish", "forgetful", "frivolous", "generic",
"guarded", "hesitant", "ignorant", "inactive", "indifferent", "insincere", "intimidating", "introvert", "irresponsible",
"irritating", "jealous", "kill-joy", "lonely", "nerdy", "one-dimensional", "overconfident", "overwhelmed", "overwhelming",
"preoccupied", "reckless", "regular")
/ position = (55%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_4>
/ options = ("mindful", "normal", "opportunist", "outdoorsy", "peaceful", "planner", "quirky", "realistic",
"relaxed", "reliable", "resilient", "responsible", "self-aware", "sociable", "spirited", "stable",
"supportive", "thorough", "truthful", "understanding", "visionary", "well-mannered", "well-rounded", "wise",
"risky", "self-absorbed", "shallow", "simple", "snobbish", "stressed", "stringent", "stupid", "tired",
"typical", "unapproachable", "uncharming", "uncool", "unenergetic", "unexciting", "unimaginable", "unintellectual", "unintelligent",
"uninteresting", "uninvolved", "unmotivated", "unorganized", "unoriginal", "unproductive", "unserious", "untalkative")
/ position = (75%, 15%)
/ order = random
/ required = false
</checkboxes>

<text error>
/ items = ("You must select 80 traits.")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

<surveypage error_1>
/ stimulusframes = [1=error]
/ branch = [surveypage.X_traits_1]
/ showbackbutton = false
/ finishlabel = "Back"
</surveypage>

<survey example>
/ pages = [1=surveypage.X_traits_1]
/ showpagenumbers = false
/ showquestionnumbers = false
</survey>

This worked! Thank you.

By the way, you can make the error message friendlier / more informative by including the number of traits currently selected.

<text error>
/ items = ("You must select 80 traits.
(You currently have <%checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount%> selected.)")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

vicki.rivera
vicki.rivera
Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)
Group: Forum Members
Posts: 13, Visits: 43
Dave - 4/29/2025
vicki.rivera - 4/29/2025
Hello!
I am designing a study where participants see a list of about 200 traits and have to select 80 in order to continue. I am using the checkboxes element so that they can make multiple selections. I also have the traits spread over 4 different checkboxes, so that I could create multiple columns. They are shown an error message if they do not select 80 traits. I wanted to know if:
1. There is a way to insert a live counter which would show the participant how many traits they've already selected. For example, if they've selected 10 traits so far the counter would show 10 on the screen. 
2. If not, then is there a way to make sure that the participants maintain their previously selected choices after viewing the error message? Right now, they see the error message, and are then routed back to the survey page, but lose all of their previous selections.
I appreciate any advice! Here is the script which contains all of the relevant elements for this task:

<surveypage X_traits_1>
/ caption = "Choose 80 traits that best describe <%item.novelperson.item(values.personXnumber)%>..."
/ questions = [1 = X_traits_1; 2 = X_traits_2; 3 = X_traits_3; 4 = X_traits_4]
/ nextbuttonposition = (75%, 260%)
/ showpagenumbers = false
/ branch = [if ((checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount) != 80) trial.error_1]
/ stimulusframes = [1=selectedcount1]
</surveypage>

<text selectedcount1>
/ items = ("<%checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount%>")
/ position = (85%, 10%)
</text>

<checkboxes X_traits_1>
/ options = ("smart", "funny", "friendly", "fun", "kind", "outgoing", "talented", "adventurous",
"interesting", "nice", "driven", "social", "athletic", "creative", "extraverted", "hardworking",
"involved", "honest", "organized", "caring", "independent", "open-minded", "positive", "thoughtful",
"approachable",
"careless", "boring", "disorganized", "rude", "lazy", "indecisive", "quiet", "pessimistic", "annoying",
"dumb", "arrogant", "unfocused", "unfriendly", "impulsive", "selfish", "serious", "unsure", "weird",
"basic", "distracted", "judgmental", "loud", "meek", "messy", "aloof", "antisocial", "awkward",
"close-minded", "conceited", "crude")
/ position = (15%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_2>
/ options = ("brave", "calm", "carefree", "easygoing", "happy", "humble", "joyful", "motivated", "passionate",
"analytical", "chill", "confident", "diligent", "engaged", "goal-focused", "loyal", "personable",
"respectful", "studious", "well-spoken", "accepting", "accomplished", "active", "adaptable", "affable",
"egocentric", "hasty", "immature", "impatient", "inconsistent", "insecure", "negative", "obnoxious", "overbearing",
"regretful", "rigid", "try-hard", "vague", "bothered", "braggy", "busy", "chaotic", "cliquish",
"cold", "competitive", "condescending", "confusing", "cowardly", "crazy", "cynical", "demeaning", "detached",
"disrespectful", "distant", "ditzy")
/ position = (35%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_3>
/ options = ("amazing", "ambitious", "artistic", "aware", "balanced", "careful", "compassionate", "cultured",
"curious", "deep-thinker", "descriptive", "direct", "eager", "engaging", "entertaining", "explorative",
"future-focused", "genuine", "hardworker", "healthy", "interactive", "laid-back", "leader", "likeable",
"mature",
"dry", "dull", "eccentric", "fearful", "flustered", "foolish", "forgetful", "frivolous", "generic",
"guarded", "hesitant", "ignorant", "inactive", "indifferent", "insincere", "intimidating", "introvert", "irresponsible",
"irritating", "jealous", "kill-joy", "lonely", "nerdy", "one-dimensional", "overconfident", "overwhelmed", "overwhelming",
"preoccupied", "reckless", "regular")
/ position = (55%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_4>
/ options = ("mindful", "normal", "opportunist", "outdoorsy", "peaceful", "planner", "quirky", "realistic",
"relaxed", "reliable", "resilient", "responsible", "self-aware", "sociable", "spirited", "stable",
"supportive", "thorough", "truthful", "understanding", "visionary", "well-mannered", "well-rounded", "wise",
"risky", "self-absorbed", "shallow", "simple", "snobbish", "stressed", "stringent", "stupid", "tired",
"typical", "unapproachable", "uncharming", "uncool", "unenergetic", "unexciting", "unimaginable", "unintellectual", "unintelligent",
"uninteresting", "uninvolved", "unmotivated", "unorganized", "unoriginal", "unproductive", "unserious", "untalkative")
/ position = (75%, 15%)
/ order = random
/ required = false
</checkboxes>

<text error>
/ items = ("You must select 80 traits.")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

<text back>
/ items = ("<< Go Back")
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3%, false, false, true, false, 5, 0)
/ txcolor = blue
</text>

<trial error_1>
/ stimulusframes = [1=error, back]
/ correctresponse = (back)
/ inputdevice = mouse
/ branch = [if (trial.error_1.correctstreak >= 1) surveypage.X_traits_1]
</trial>

> 1. There is a way to insert a live counter which would show the participant how many traits they've already selected. For example, if they've selected 10 traits so far the counter would show 10 on the screen.

No.

> 2. If not, then is there a way to make sure that the participants maintain their previously selected choices after viewing the error message? Right now, they see the error message, and are then routed back to the survey page, but lose all of their previous selections.

Use a <survey> to run the page, not a <block>. That, however, means you'll have to use a <surveypage> to display the error message, not a <trial>.

<surveypage X_traits_1>
/ caption = "Choose 80 traits that best describe..."
/ questions = [1 = X_traits_1; 2 = X_traits_2; 3 = X_traits_3; 4 = X_traits_4]
/ nextbuttonposition = (75%, 260%)
/ showpagenumbers = false
/ branch = [if ((checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount) != 80) surveypage.error_1]
</surveypage>

<checkboxes X_traits_1>
/ options = ("smart", "funny", "friendly", "fun", "kind", "outgoing", "talented", "adventurous",
"interesting", "nice", "driven", "social", "athletic", "creative", "extraverted", "hardworking",
"involved", "honest", "organized", "caring", "independent", "open-minded", "positive", "thoughtful",
"approachable",
"careless", "boring", "disorganized", "rude", "lazy", "indecisive", "quiet", "pessimistic", "annoying",
"dumb", "arrogant", "unfocused", "unfriendly", "impulsive", "selfish", "serious", "unsure", "weird",
"basic", "distracted", "judgmental", "loud", "meek", "messy", "aloof", "antisocial", "awkward",
"close-minded", "conceited", "crude")
/ position = (15%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_2>
/ options = ("brave", "calm", "carefree", "easygoing", "happy", "humble", "joyful", "motivated", "passionate",
"analytical", "chill", "confident", "diligent", "engaged", "goal-focused", "loyal", "personable",
"respectful", "studious", "well-spoken", "accepting", "accomplished", "active", "adaptable", "affable",
"egocentric", "hasty", "immature", "impatient", "inconsistent", "insecure", "negative", "obnoxious", "overbearing",
"regretful", "rigid", "try-hard", "vague", "bothered", "braggy", "busy", "chaotic", "cliquish",
"cold", "competitive", "condescending", "confusing", "cowardly", "crazy", "cynical", "demeaning", "detached",
"disrespectful", "distant", "ditzy")
/ position = (35%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_3>
/ options = ("amazing", "ambitious", "artistic", "aware", "balanced", "careful", "compassionate", "cultured",
"curious", "deep-thinker", "descriptive", "direct", "eager", "engaging", "entertaining", "explorative",
"future-focused", "genuine", "hardworker", "healthy", "interactive", "laid-back", "leader", "likeable",
"mature",
"dry", "dull", "eccentric", "fearful", "flustered", "foolish", "forgetful", "frivolous", "generic",
"guarded", "hesitant", "ignorant", "inactive", "indifferent", "insincere", "intimidating", "introvert", "irresponsible",
"irritating", "jealous", "kill-joy", "lonely", "nerdy", "one-dimensional", "overconfident", "overwhelmed", "overwhelming",
"preoccupied", "reckless", "regular")
/ position = (55%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_4>
/ options = ("mindful", "normal", "opportunist", "outdoorsy", "peaceful", "planner", "quirky", "realistic",
"relaxed", "reliable", "resilient", "responsible", "self-aware", "sociable", "spirited", "stable",
"supportive", "thorough", "truthful", "understanding", "visionary", "well-mannered", "well-rounded", "wise",
"risky", "self-absorbed", "shallow", "simple", "snobbish", "stressed", "stringent", "stupid", "tired",
"typical", "unapproachable", "uncharming", "uncool", "unenergetic", "unexciting", "unimaginable", "unintellectual", "unintelligent",
"uninteresting", "uninvolved", "unmotivated", "unorganized", "unoriginal", "unproductive", "unserious", "untalkative")
/ position = (75%, 15%)
/ order = random
/ required = false
</checkboxes>

<text error>
/ items = ("You must select 80 traits.")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

<surveypage error_1>
/ stimulusframes = [1=error]
/ branch = [surveypage.X_traits_1]
/ showbackbutton = false
/ finishlabel = "Back"
</surveypage>

<survey example>
/ pages = [1=surveypage.X_traits_1]
/ showpagenumbers = false
/ showquestionnumbers = false
</survey>

This worked! Thank you.
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 107K
vicki.rivera - 4/29/2025
Hello!
I am designing a study where participants see a list of about 200 traits and have to select 80 in order to continue. I am using the checkboxes element so that they can make multiple selections. I also have the traits spread over 4 different checkboxes, so that I could create multiple columns. They are shown an error message if they do not select 80 traits. I wanted to know if:
1. There is a way to insert a live counter which would show the participant how many traits they've already selected. For example, if they've selected 10 traits so far the counter would show 10 on the screen. 
2. If not, then is there a way to make sure that the participants maintain their previously selected choices after viewing the error message? Right now, they see the error message, and are then routed back to the survey page, but lose all of their previous selections.
I appreciate any advice! Here is the script which contains all of the relevant elements for this task:

<surveypage X_traits_1>
/ caption = "Choose 80 traits that best describe <%item.novelperson.item(values.personXnumber)%>..."
/ questions = [1 = X_traits_1; 2 = X_traits_2; 3 = X_traits_3; 4 = X_traits_4]
/ nextbuttonposition = (75%, 260%)
/ showpagenumbers = false
/ branch = [if ((checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount) != 80) trial.error_1]
/ stimulusframes = [1=selectedcount1]
</surveypage>

<text selectedcount1>
/ items = ("<%checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount%>")
/ position = (85%, 10%)
</text>

<checkboxes X_traits_1>
/ options = ("smart", "funny", "friendly", "fun", "kind", "outgoing", "talented", "adventurous",
"interesting", "nice", "driven", "social", "athletic", "creative", "extraverted", "hardworking",
"involved", "honest", "organized", "caring", "independent", "open-minded", "positive", "thoughtful",
"approachable",
"careless", "boring", "disorganized", "rude", "lazy", "indecisive", "quiet", "pessimistic", "annoying",
"dumb", "arrogant", "unfocused", "unfriendly", "impulsive", "selfish", "serious", "unsure", "weird",
"basic", "distracted", "judgmental", "loud", "meek", "messy", "aloof", "antisocial", "awkward",
"close-minded", "conceited", "crude")
/ position = (15%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_2>
/ options = ("brave", "calm", "carefree", "easygoing", "happy", "humble", "joyful", "motivated", "passionate",
"analytical", "chill", "confident", "diligent", "engaged", "goal-focused", "loyal", "personable",
"respectful", "studious", "well-spoken", "accepting", "accomplished", "active", "adaptable", "affable",
"egocentric", "hasty", "immature", "impatient", "inconsistent", "insecure", "negative", "obnoxious", "overbearing",
"regretful", "rigid", "try-hard", "vague", "bothered", "braggy", "busy", "chaotic", "cliquish",
"cold", "competitive", "condescending", "confusing", "cowardly", "crazy", "cynical", "demeaning", "detached",
"disrespectful", "distant", "ditzy")
/ position = (35%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_3>
/ options = ("amazing", "ambitious", "artistic", "aware", "balanced", "careful", "compassionate", "cultured",
"curious", "deep-thinker", "descriptive", "direct", "eager", "engaging", "entertaining", "explorative",
"future-focused", "genuine", "hardworker", "healthy", "interactive", "laid-back", "leader", "likeable",
"mature",
"dry", "dull", "eccentric", "fearful", "flustered", "foolish", "forgetful", "frivolous", "generic",
"guarded", "hesitant", "ignorant", "inactive", "indifferent", "insincere", "intimidating", "introvert", "irresponsible",
"irritating", "jealous", "kill-joy", "lonely", "nerdy", "one-dimensional", "overconfident", "overwhelmed", "overwhelming",
"preoccupied", "reckless", "regular")
/ position = (55%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_4>
/ options = ("mindful", "normal", "opportunist", "outdoorsy", "peaceful", "planner", "quirky", "realistic",
"relaxed", "reliable", "resilient", "responsible", "self-aware", "sociable", "spirited", "stable",
"supportive", "thorough", "truthful", "understanding", "visionary", "well-mannered", "well-rounded", "wise",
"risky", "self-absorbed", "shallow", "simple", "snobbish", "stressed", "stringent", "stupid", "tired",
"typical", "unapproachable", "uncharming", "uncool", "unenergetic", "unexciting", "unimaginable", "unintellectual", "unintelligent",
"uninteresting", "uninvolved", "unmotivated", "unorganized", "unoriginal", "unproductive", "unserious", "untalkative")
/ position = (75%, 15%)
/ order = random
/ required = false
</checkboxes>

<text error>
/ items = ("You must select 80 traits.")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

<text back>
/ items = ("<< Go Back")
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3%, false, false, true, false, 5, 0)
/ txcolor = blue
</text>

<trial error_1>
/ stimulusframes = [1=error, back]
/ correctresponse = (back)
/ inputdevice = mouse
/ branch = [if (trial.error_1.correctstreak >= 1) surveypage.X_traits_1]
</trial>

> 1. There is a way to insert a live counter which would show the participant how many traits they've already selected. For example, if they've selected 10 traits so far the counter would show 10 on the screen.

No.

> 2. If not, then is there a way to make sure that the participants maintain their previously selected choices after viewing the error message? Right now, they see the error message, and are then routed back to the survey page, but lose all of their previous selections.

Use a <survey> to run the page, not a <block>. That, however, means you'll have to use a <surveypage> to display the error message, not a <trial>.

<surveypage X_traits_1>
/ caption = "Choose 80 traits that best describe..."
/ questions = [1 = X_traits_1; 2 = X_traits_2; 3 = X_traits_3; 4 = X_traits_4]
/ nextbuttonposition = (75%, 260%)
/ showpagenumbers = false
/ branch = [if ((checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount) != 80) surveypage.error_1]
</surveypage>

<checkboxes X_traits_1>
/ options = ("smart", "funny", "friendly", "fun", "kind", "outgoing", "talented", "adventurous",
"interesting", "nice", "driven", "social", "athletic", "creative", "extraverted", "hardworking",
"involved", "honest", "organized", "caring", "independent", "open-minded", "positive", "thoughtful",
"approachable",
"careless", "boring", "disorganized", "rude", "lazy", "indecisive", "quiet", "pessimistic", "annoying",
"dumb", "arrogant", "unfocused", "unfriendly", "impulsive", "selfish", "serious", "unsure", "weird",
"basic", "distracted", "judgmental", "loud", "meek", "messy", "aloof", "antisocial", "awkward",
"close-minded", "conceited", "crude")
/ position = (15%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_2>
/ options = ("brave", "calm", "carefree", "easygoing", "happy", "humble", "joyful", "motivated", "passionate",
"analytical", "chill", "confident", "diligent", "engaged", "goal-focused", "loyal", "personable",
"respectful", "studious", "well-spoken", "accepting", "accomplished", "active", "adaptable", "affable",
"egocentric", "hasty", "immature", "impatient", "inconsistent", "insecure", "negative", "obnoxious", "overbearing",
"regretful", "rigid", "try-hard", "vague", "bothered", "braggy", "busy", "chaotic", "cliquish",
"cold", "competitive", "condescending", "confusing", "cowardly", "crazy", "cynical", "demeaning", "detached",
"disrespectful", "distant", "ditzy")
/ position = (35%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_3>
/ options = ("amazing", "ambitious", "artistic", "aware", "balanced", "careful", "compassionate", "cultured",
"curious", "deep-thinker", "descriptive", "direct", "eager", "engaging", "entertaining", "explorative",
"future-focused", "genuine", "hardworker", "healthy", "interactive", "laid-back", "leader", "likeable",
"mature",
"dry", "dull", "eccentric", "fearful", "flustered", "foolish", "forgetful", "frivolous", "generic",
"guarded", "hesitant", "ignorant", "inactive", "indifferent", "insincere", "intimidating", "introvert", "irresponsible",
"irritating", "jealous", "kill-joy", "lonely", "nerdy", "one-dimensional", "overconfident", "overwhelmed", "overwhelming",
"preoccupied", "reckless", "regular")
/ position = (55%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_4>
/ options = ("mindful", "normal", "opportunist", "outdoorsy", "peaceful", "planner", "quirky", "realistic",
"relaxed", "reliable", "resilient", "responsible", "self-aware", "sociable", "spirited", "stable",
"supportive", "thorough", "truthful", "understanding", "visionary", "well-mannered", "well-rounded", "wise",
"risky", "self-absorbed", "shallow", "simple", "snobbish", "stressed", "stringent", "stupid", "tired",
"typical", "unapproachable", "uncharming", "uncool", "unenergetic", "unexciting", "unimaginable", "unintellectual", "unintelligent",
"uninteresting", "uninvolved", "unmotivated", "unorganized", "unoriginal", "unproductive", "unserious", "untalkative")
/ position = (75%, 15%)
/ order = random
/ required = false
</checkboxes>

<text error>
/ items = ("You must select 80 traits.")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

<surveypage error_1>
/ stimulusframes = [1=error]
/ branch = [surveypage.X_traits_1]
/ showbackbutton = false
/ finishlabel = "Back"
</surveypage>

<survey example>
/ pages = [1=surveypage.X_traits_1]
/ showpagenumbers = false
/ showquestionnumbers = false
</survey>

vicki.rivera
vicki.rivera
Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)Associate Member (130 reputation)
Group: Forum Members
Posts: 13, Visits: 43
Hello!
I am designing a study where participants see a list of about 200 traits and have to select 80 in order to continue. I am using the checkboxes element so that they can make multiple selections. I also have the traits spread over 4 different checkboxes, so that I could create multiple columns. They are shown an error message if they do not select 80 traits. I wanted to know if:
1. There is a way to insert a live counter which would show the participant how many traits they've already selected. For example, if they've selected 10 traits so far the counter would show 10 on the screen. 
2. If not, then is there a way to make sure that the participants maintain their previously selected choices after viewing the error message? Right now, they see the error message, and are then routed back to the survey page, but lose all of their previous selections.
I appreciate any advice! Here is the script which contains all of the relevant elements for this task:

<surveypage X_traits_1>
/ caption = "Choose 80 traits that best describe <%item.novelperson.item(values.personXnumber)%>..."
/ questions = [1 = X_traits_1; 2 = X_traits_2; 3 = X_traits_3; 4 = X_traits_4]
/ nextbuttonposition = (75%, 260%)
/ showpagenumbers = false
/ branch = [if ((checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount) != 80) trial.error_1]
/ stimulusframes = [1=selectedcount1]
</surveypage>

<text selectedcount1>
/ items = ("<%checkboxes.X_traits_1.selectedcount + checkboxes.X_traits_2.selectedcount + checkboxes.X_traits_3.selectedcount + checkboxes.X_traits_4.selectedcount%>")
/ position = (85%, 10%)
</text>

<checkboxes X_traits_1>
/ options = ("smart", "funny", "friendly", "fun", "kind", "outgoing", "talented", "adventurous",
"interesting", "nice", "driven", "social", "athletic", "creative", "extraverted", "hardworking",
"involved", "honest", "organized", "caring", "independent", "open-minded", "positive", "thoughtful",
"approachable",
"careless", "boring", "disorganized", "rude", "lazy", "indecisive", "quiet", "pessimistic", "annoying",
"dumb", "arrogant", "unfocused", "unfriendly", "impulsive", "selfish", "serious", "unsure", "weird",
"basic", "distracted", "judgmental", "loud", "meek", "messy", "aloof", "antisocial", "awkward",
"close-minded", "conceited", "crude")
/ position = (15%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_2>
/ options = ("brave", "calm", "carefree", "easygoing", "happy", "humble", "joyful", "motivated", "passionate",
"analytical", "chill", "confident", "diligent", "engaged", "goal-focused", "loyal", "personable",
"respectful", "studious", "well-spoken", "accepting", "accomplished", "active", "adaptable", "affable",
"egocentric", "hasty", "immature", "impatient", "inconsistent", "insecure", "negative", "obnoxious", "overbearing",
"regretful", "rigid", "try-hard", "vague", "bothered", "braggy", "busy", "chaotic", "cliquish",
"cold", "competitive", "condescending", "confusing", "cowardly", "crazy", "cynical", "demeaning", "detached",
"disrespectful", "distant", "ditzy")
/ position = (35%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_3>
/ options = ("amazing", "ambitious", "artistic", "aware", "balanced", "careful", "compassionate", "cultured",
"curious", "deep-thinker", "descriptive", "direct", "eager", "engaging", "entertaining", "explorative",
"future-focused", "genuine", "hardworker", "healthy", "interactive", "laid-back", "leader", "likeable",
"mature",
"dry", "dull", "eccentric", "fearful", "flustered", "foolish", "forgetful", "frivolous", "generic",
"guarded", "hesitant", "ignorant", "inactive", "indifferent", "insincere", "intimidating", "introvert", "irresponsible",
"irritating", "jealous", "kill-joy", "lonely", "nerdy", "one-dimensional", "overconfident", "overwhelmed", "overwhelming",
"preoccupied", "reckless", "regular")
/ position = (55%, 15%)
/ order = random
/ required = false
</checkboxes>

<checkboxes X_traits_4>
/ options = ("mindful", "normal", "opportunist", "outdoorsy", "peaceful", "planner", "quirky", "realistic",
"relaxed", "reliable", "resilient", "responsible", "self-aware", "sociable", "spirited", "stable",
"supportive", "thorough", "truthful", "understanding", "visionary", "well-mannered", "well-rounded", "wise",
"risky", "self-absorbed", "shallow", "simple", "snobbish", "stressed", "stringent", "stupid", "tired",
"typical", "unapproachable", "uncharming", "uncool", "unenergetic", "unexciting", "unimaginable", "unintellectual", "unintelligent",
"uninteresting", "uninvolved", "unmotivated", "unorganized", "unoriginal", "unproductive", "unserious", "untalkative")
/ position = (75%, 15%)
/ order = random
/ required = false
</checkboxes>

<text error>
/ items = ("You must select 80 traits.")
/ txcolor = red
/ position = (50%, 50%)
/ fontstyle = ("Arial", 4%)
</text>

<text back>
/ items = ("<< Go Back")
/ position = (50%, 90%)
/ fontstyle = ("Arial", 3%, false, false, true, false, 5, 0)
/ txcolor = blue
</text>

<trial error_1>
/ stimulusframes = [1=error, back]
/ correctresponse = (back)
/ inputdevice = mouse
/ branch = [if (trial.error_1.correctstreak >= 1) surveypage.X_traits_1]
</trial>

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search