CL Newsletter, March 2023 - disableEdit and disableChange

Hey, folks!

February was a short month, so we wrote a short newsletter. But that doesn’t mean we’ll make it any less fantastic! We have two new sinks that were created in response to one of our most popular feature requests: preventing a student from changing their response. First, we’ll reminisce about how things used to be done (and the hacks we used). Then, we’ll dive into how these new sinks will make our lives easier and our activities look more professional.

For as long as we’ve known, people have asked for the ability to lock a student’s response so that it can’t be modified after something happens.

We did this by using “capture” to lock in the first response

or we replaced math inputs with single-celled tables.

Then it became popular to hide the inputs completely or cover them with a screen cover.

But that caused problems with reviewing work because the inputs were hidden not just from the student, but from the teacher as well.

Today, the most popular version we see online is a combination of hiding inputs and adding a second hidden note that replaces the input and then displays what was entered.

But this hack is time consuming, and the result is less than ideal.

So what is possible now?

There are two new sinks that can prevent a student from editing their response, without hiding their work or having to replicate their work yourself.

Use disableEdit in a math input to prevent a student from modifying their answer.

Use disableChange in a choice component to prevent a student from changing their selection.

As with other boolean sinks, you can set the condition for which you’d like “disable” to be true. This means you can:

  • Prevent editing while feedback is playing.
  • Prevent students from revising their predictions.
  • “Lock” responses at the end of an activity.

If complete control over the behavior of a math or choice component is something you desire, try combining these new sinks with others, like maxSelectedChoices, submitDisabled, and resetOnChange.