# Forms on pavlovia

**URL:** <https://discourse.psychopy.org/t/forms-on-pavlovia/13512>\
**Category:** Builder\
**Created:** [May 20, 2020, 7:58am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512 "2020-05-20T07:58:29Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![jonprince](https://avatars.discourse-cdn.com/v4/letter/j/46a35a/32.png) [@jonprince](https://discourse.psychopy.org/u/jonprince)\
**Post date:** [May 20, 2020, 7:58am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/1 "2020-05-20T07:58:29Z")

</div>

So if forms don’t work on pavlovia ([Forms work locally on Psychopy but disappear on Pavlovia](https://discourse.psychopy.org/t/forms-work-locally-on-psychopy-but-disappear-on-pavlovia/12743)), what is the alternative? I’m at the end of my rope with this translation from psychopy to pavlovia thing - if I had any idea I was going to have to learn not one but two languages to make this work I probably never would have tried. Sorry.

---

<div class="post-metadata">

**Author:** ![LukasPsy](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/lukaspsy/32/4582_2.png) [@LukasPsy](https://discourse.psychopy.org/u/LukasPsy)\
**Post date:** [May 20, 2020, 8:01am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/2 "2020-05-20T08:01:52Z")

</div>

Could you just use multiple rating-scales?

---

<div class="post-metadata">

**Author:** ![jonprince](https://avatars.discourse-cdn.com/v4/letter/j/46a35a/32.png) [@jonprince](https://discourse.psychopy.org/u/jonprince)\
**Post date:** [May 20, 2020, 10:29am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/3 "2020-05-20T10:29:31Z")

</div>

I just spent hours doing this total revamp only to discover that rating scales don’t work either.

> [@Experiment will run online but is missing parts](https://discourse.psychopy.org/t/experiment-will-run-online-but-is-missing-parts/12417):
>
> URL of experiment: [https://run.pavlovia.org/ab3082/practiceexperiment1/html](https://run.pavlovia.org/ab3082/practiceexperiment1/html) Hello all, thanks for reading! My experiment consists of video clip stimuli looped with responses where the participant clicks “good”, “bad”, or “okay”. Both the stimuli and the responses show up when I run the experiment on my computer, but when I run it on Pavlovia, it just runs straight through all the video clips without the response part showing up in between each one. I made the experiment only using Builder and d…

---

<div class="post-metadata">

**Author:** ![LukasPsy](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/lukaspsy/32/4582_2.png) [@LukasPsy](https://discourse.psychopy.org/u/LukasPsy)\
**Post date:** [May 20, 2020, 10:47am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/4 "2020-05-20T10:47:19Z")

</div>

I’m awfully sorry. 😕 😟 I answered your post with a question, because I myself was unsure what the best way would be. Before you refactor your entire experiment, always try out in a small project, whether the component works the way you want it to.

As the post said, you’ll have to switch to the newer Slider component.

---

<div class="post-metadata">

**Author:** ![jonprince](https://avatars.discourse-cdn.com/v4/letter/j/46a35a/32.png) [@jonprince](https://discourse.psychopy.org/u/jonprince)\
**Post date:** [May 20, 2020, 11:06am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/5 "2020-05-20T11:06:55Z")

</div>

Yeah you’re totally right, I should have tried out a smaller version first - wasn’t trying to blame you. Cheers for the help.

---

<div class="post-metadata">

**Author:** ![jon](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/jon/32/22_2.png) [@jon](https://discourse.psychopy.org/u/jon)\
**Post date:** [May 20, 2020, 11:17am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/6 "2020-05-20T11:17:10Z")

</div>

Yes, although Rating Scale doesn’t work but Slider does. We’re working on better forms for both offline/online in next release. Good news is that our new popularity (pavlovia site licenses bought) means we have staff starting and hopefully we’ll be able to add new features much faster going forwards. So far we’ve been on a shoestring budget with mostly volunteer help.

---

<div class="post-metadata">

**Author:** ![alissa](https://avatars.discourse-cdn.com/v4/letter/a/6f9a4e/32.png) [@alissa](https://discourse.psychopy.org/u/alissa)\
**Post date:** [May 20, 2020, 3:57pm UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/7 "2020-05-20T15:57:25Z")

</div>

I’m not sure whether this could work for you but just to offer my experience, I went with using keypress responses. I put text on the screen that asked a question and provided answer choices, like a multiple-choice test question, and then had participants press the letter on their keyboard that corresponded. B for answer choice “b.” etc. It was very low-tech and not slick but got the job done.

I’m sorry you’re in the same boat as I was. I think I’ve got some gray hairs from the days I spent trying to figure this out. At some points I’m pretty sure there was cartoon steam coming out of my ears. I wish you and anyone else reading this for help smoother sailing from here on out.

---

<div class="post-metadata">

**Author:** ![jonprince](https://avatars.discourse-cdn.com/v4/letter/j/46a35a/32.png) [@jonprince](https://discourse.psychopy.org/u/jonprince)\
**Post date:** [May 21, 2020, 4:27am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/8 "2020-05-21T04:27:14Z")

</div>

Good to hear, Jon. Best wishes with the development.

Great idea, Alissa - thanks for that. I ended up getting it to work with sliders but you’re right that would be a good solution. Thanks also for your kind words; the steam coming out of my ears was very real…

---

<div class="post-metadata">

**Author:** ![aisa2](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/aisa2/32/8666_2.png) [@aisa2](https://discourse.psychopy.org/u/aisa2)\
**Post date:** [May 25, 2020, 3:02pm UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/9 "2020-05-25T15:02:42Z")

</div>

@jon do you have an idea of when the next release will be that fixes these issues? I’m debating whether I should change my rating scale to a slider just for the sake of going online, or just wait for the update…

---

<div class="post-metadata">

**Author:** ![jon](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/jon/32/22_2.png) [@jon](https://discourse.psychopy.org/u/jon)\
**Post date:** [May 25, 2020, 4:43pm UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/10 "2020-05-25T16:43:01Z")

</div>

I don’t expect us to implement RatingScale. Slider can achieve all the things that RatingScale can and more, while also having simpler code behind it.

---

<div class="post-metadata">

**Author:** ![lcruz](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/lcruz/32/13697_2.png) [@lcruz](https://discourse.psychopy.org/u/lcruz)\
**Post date:** [January 27, 2021, 11:23am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/11 "2021-01-27T11:23:57Z")

</div>

Hi Jon,  
I had the same problem, I did not expect it… and yes, we should have tried a shorter version first.  
We will change all our items to Slider, but can slider be “categorial” like a Likert scale?  
We’ve used slider but it appears as a continuous so participants can chose in between the main categories. Is there a solution for this?

Many thanks! 🙂  
Laura

---

<div class="post-metadata">

**Author:** ![jon](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/jon/32/22_2.png) [@jon](https://discourse.psychopy.org/u/jon)\
**Post date:** [January 27, 2021, 3:44pm UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/12 "2021-01-27T15:44:46Z")

</div>

yes, using ticks, labels, and granularity settings you should be able to control the appearance fully. e.g. a 7-point scale with labels on the endpoints and centre:

- ticks = [1,2,3,4,5,6,7]
- labels = [‘disagree’, ‘not sure’, ‘agree’]
- granularity = 1

---

<div class="post-metadata">

**Author:** ![jon](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/jon/32/22_2.png) [@jon](https://discourse.psychopy.org/u/jon)\
**Post date:** [January 27, 2021, 3:46pm UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/13 "2021-01-27T15:46:39Z")

</div>

Also though, given that you sound like you created a lot of these, you might want to use the Form component, or at least put your questions in a loop. In PsychoPy, when you find yourself doing something a lot it’s often a sign that you aren’t using the features fully 🙂

---

<div class="post-metadata">

**Author:** ![wakecarter](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/wakecarter/32/5753_2.png) [@wakecarter](https://discourse.psychopy.org/u/wakecarter)\
**Post date:** [February 22, 2021, 8:25am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/14 "2021-02-22T08:25:23Z")

</div>

I’ve just used a form online for the first time. What version did they get implemented?

I discovered that I had to tick both Light and Dark styles in appearance and use choice instead of radio or slider. [Radio fails entirely](https://discourse.psychopy.org/t/survey-form-component-button-type-problem/20250/6) and slider didn’t show value labels.

---

<div class="post-metadata">

**Author:** ![Jon\_Aisi](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/jon_aisi/32/13519_2.png) [@Jon\_Aisi](https://discourse.psychopy.org/u/Jon_Aisi)\
**Post date:** [February 22, 2021, 2:26pm UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/15 "2021-02-22T14:26:15Z")

</div>

Thanks guys!  
I discovered that if you want the labels to appear in the slider, you need to use this for (“hello”, “world”)

---

<div class="post-metadata">

**Author:** ![jon](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/jon/32/22_2.png) [@jon](https://discourse.psychopy.org/u/jon)\
**Post date:** [February 22, 2021, 4:22pm UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/16 "2021-02-22T16:22:36Z")

</div>

@wakecarter I think Forms have been implemented in PsychoJS since 2020.2 but let’s say it’s been a “journey” 😉 These things are complicated to create from scratch\*

We’ve just released version 2021.1.0 and there were several more fixes to Form Components in that release:

- Instead of using `radio` call the option `choice`. There was some confusion about what to call it. Currently, Python supports `choice` and `radio` as synonyms, whereas JS is only supporting `choice` we’ll set `radio` as an alias online as well but for now `choice` does work everywhere
- I think the issue with Light/Dark styles has been fixed too

best wishes,  
Jon

\*We’ve created forms with our own rendering from scratch because wanted WebGL rendering where we can get high-performance graphics. The other option was to implement in jQuery where it’s done for us but we wouldn’t have control of rendering to the same degree. Oh, you can also use jQuery yourself, directly though, of course via Code Components

---

<div class="post-metadata">

**Author:** ![arnon\_weinberg](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.psychopy.org/arnon_weinberg/32/9486_2.png) [@arnon\_weinberg](https://discourse.psychopy.org/u/arnon_weinberg)\
**Post date:** [March 4, 2021, 2:31am UTC](https://discourse.psychopy.org/t/forms-on-pavlovia/13512/17 "2021-03-04T02:31:31Z")

</div>

Just adding the search phrase:

> RADIO is not a valid type for item

So that others can find this post easier than I did.  
The current [Form Component](https://www.psychopy.org/builder/components/form.html) documentation lists radio as a valid type, which is not the case currently:

```auto
type
    The type of rating e.g., ‘radio’, ‘rating’, ‘slider’

```

Valid types listed in visual-2021.1.2.js are:

```auto
        HEADING: Symbol.for('HEADING'),
        DESCRIPTION: Symbol.for('DESCRIPTION'),
        RATING: Symbol.for('RATING'),
        SLIDER: Symbol.for('SLIDER'),
        FREE_TEXT: Symbol.for('FREE_TEXT'),
        CHOICE: Symbol.for('CHOICE')

```
