# Perspective form radio button validation

**URL:** <https://forum.inductiveautomation.com/t/perspective-form-radio-button-validation/112126>\
**Category:** Ignition\
**Tags:** ignition83, perspective\
**Created:** [November 12, 2025, 3:29pm UTC](https://forum.inductiveautomation.com/t/perspective-form-radio-button-validation/112126 "2025-11-12T15:29:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [November 12, 2025, 3:29pm UTC](https://forum.inductiveautomation.com/t/perspective-form-radio-button-validation/112126/1 "2025-11-12T15:29:46Z")

</div>

What type of constraint is required for radio button on a form to ensure a selection is made?

Right now, the values match the text (Yes | No | N/A) but I’m not married to that, as I’m just starting the front end. I had tried a pattern just to match ‘Yes’, but the status stays valid at all times.

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/a/8ac31d9edd6fd1ca9d05ff58f8e438c5e323f269.png)

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/a/3a7abe9dd4428b926f01e16799ec4041d1c6a013.png)

---

<div class="post-metadata">

**Author:** ![MMaynard](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mmaynard/32/3366_2.png) [@MMaynard](https://forum.inductiveautomation.com/u/MMaynard)\
**Post date:** [November 12, 2025, 3:55pm UTC](https://forum.inductiveautomation.com/t/perspective-form-radio-button-validation/112126/2 "2025-11-12T15:55:34Z")

</div>

In my 8.1.x radio group the options have a boolean called selected, I use that for validation.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/d/9d89d5fe65b479a536abdacad241022b93744e31.png)

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [November 12, 2025, 4:17pm UTC](https://forum.inductiveautomation.com/t/perspective-form-radio-button-validation/112126/3 "2025-11-12T16:17:10Z")

</div>

Sorry, my friend, I’m asking is there’s anything for the built-in validation within the v8.3 form component.

---

<div class="post-metadata">

**Author:** ![pamato](https://avatars.discourse-cdn.com/v4/letter/p/c68b51/32.png) [@pamato](https://forum.inductiveautomation.com/u/pamato)\
**Post date:** [November 12, 2025, 4:28pm UTC](https://forum.inductiveautomation.com/t/perspective-form-radio-button-validation/112126/4 "2025-11-12T16:28:29Z")

</div>

The only available built-in constraint for radio button widgets is `required`. For anything further, you’ll need to utilize the `setCustomValidity` component function.

> **[Perspective - Form Scripting | Ignition User Manual](https://www.docs.inductiveautomation.com/docs/8.3/appendix/components/perspective-components/perspective-input-palette/perspective-form/perspective-form-scripting#setcustomvalidityinputkey-message-index)**
>
> This page details the various scripting, component, and extension functions available for Perspective's Form component. Scripting allows you to customize form behavior, handle validation dynamically, and respond to user actions.

---

<div class="post-metadata">

**Author:** ![MMaynard](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mmaynard/32/3366_2.png) [@MMaynard](https://forum.inductiveautomation.com/u/MMaynard)\
**Post date:** [November 12, 2025, 5:00pm UTC](https://forum.inductiveautomation.com/t/perspective-form-radio-button-validation/112126/5 "2025-11-12T17:00:54Z")

</div>

> [@JordanCClark](#):
>
> Sorry, my friend, I’m asking is there’s anything for the built-in validation within the v8.3 form component.

DOH… I totally missed the “form” part of the title 🙂
