---
title: "Forms V1: Form Builder & Custom Scripts (Legacy)"
description: Legacy Forms V1 reference of custom JavaScript snippets for hiding/disabling fields, conditional logic, redirects, and certification upload actions.
---

[Skip to content](https://go.sitemetric.com/sitemetric-knowledge-base/forms-v1-form-builder-and-custom-scripts-legacy#main-content)

English - United States

Show submenu for translations

![](https://go.sitemetric.com/hubfs/Icon__Wordmark_-_Horizontal_-_Red-1.svg)

- Home
- Products
- Pricing
- Blog
- Company

Open main navigation

Close main navigation

- Home
- Products
- Pricing
- Blog
- Company
- English - United States
  
  Show submenu for translations
- Contact us

 Contact us

 How can we help you?

- There are no suggestions because the search field is empty.

1. [Sitemetric Knowledge Base](https://go.sitemetric.com/sitemetric-knowledge-base?hsLang=en-us)
2. [Forms](https://go.sitemetric.com/sitemetric-knowledge-base/forms?hsLang=en-us)
3. [Reference Guide](https://go.sitemetric.com/sitemetric-knowledge-base/forms?hsLang=en-us#reference-guide)

# Forms V1: Form Builder & Custom Scripts (Legacy)

## Custom script and form action snippets for maintaining legacy Forms V1 builds

> **What this is:** Reference snippets for **Forms V1** (legacy) custom scripts and actions. **Use when:** You are maintaining an existing Forms V1 form that relies on custom scripts.

> ⚠️ Forms V1 is legacy. If you are building something new, confirm whether it should be built in Forms V2 instead.

---

## Snippets (Custom Scripts)

### Set a Text Input control as read-only

Add a `Custom Script` object and use:

```
// disable 'badge' field
const field = document.querySelector("input[name='badge']");
if (field) {
  field.readOnly = true;
}
```

Update the selector to match the control you want to modify. In this example, the field name is `badge`.

### Set the value of a Text Input control

```
field.value = "Your Text Here";
```

### Hide a Text Input control

```
if (field.parentNode && field.parentNode.parentNode) {
  field.parentNode.parentNode.style.display = "none";
}
```

### Conditional choices (more complex example)

```
// disable 'Journeyman' hidden field
const journeyman = document.querySelector("input[name='Journeyman']");
if (journeyman) {
  journeyman.readOnly = true;
  journeyman.value = "";
  if (journeyman.parentNode && journeyman.parentNode.parentNode) {
    journeyman.parentNode.parentNode.style.display = "none";
  }
}

let radiosApp = document.getElementsByName('Apprentice');
for (var i = 0, length = radiosApp.length; i < length; i++) {
  radiosApp[i].addEventListener('change', function() {
    if (this.value == 'Yes') {
      let radiosTrain = document.getElementsByName('Trainee');
      for (var i = 0, length = radiosTrain.length; i < length; i++) {
        if (radiosTrain[i].value == 'no') {
          radiosTrain[i].checked = true;
        }
      }
    }
  })
}

let radiosTrain = document.getElementsByName('Trainee');
for (var i = 0, length = radiosTrain.length; i < length; i++) {
  radiosTrain[i].addEventListener('change', function() {
    if (this.value == 'Yes') {
      let radiosApp = document.getElementsByName('Apprentice');
      for (var i = 0, length = radiosApp.length; i < length; i++) {
        if (radiosApp[i].value == 'no') {
          radiosApp[i].checked = true;
        }
      }
    }
  })
}

function submitted(event) {
  let isApprentice = true;
  let radios = document.getElementsByName('Apprentice');
  for (var i = 0, length = radios.length; i < length; i++) {
    if (radios[i].checked && radios[i].value == 'no') {
      radios[i].value = '';
      isApprentice = false;

      // only one radio can be logically checked, don't check the rest
      break;
    }
  }

  let isTrainee = true;
  radios = document.getElementsByName('Trainee');
  for (var i = 0, length = radios.length; i < length; i++) {
    if (radios[i].checked && radios[i].value == 'no') {
      radios[i].value = '';
      isTrainee = false;

      // only one radio can be logically checked, don't check the rest
      break;
    }
  }

  if (!isApprentice && !isTrainee) {
    journeyman.value = "Yes";
  }
}

var form = document.forms[0];
form.addEventListener("submit", submitted, false);
```

---

## Randomly select a number of fields to keep and hide the rest

Looks for labels that start with a number like `1.` , `2.` , etc.

- Randomly keeps 10 of them and hides the rest
- Renumbers visible labels sequentially

```
const numToKeep = 10;
let parent = document;

let toRemove = Array.from(parent.querySelectorAll('label'))
  .filter(l => l.textContent.match(/[0-9]+\. /))
  .map(l => { return { parent: l.parentElement.parentElement, el: l } });
let toKeep = [];

for (let i = 0; i < numToKeep; i++) {
  const pick = Math.floor(Math.random() * toRemove.length);
  toKeep.push(...toRemove.splice(pick, 1));
}

toRemove.forEach(e => { e.parent.style.display = 'none' });

Array.from(parent.querySelectorAll('label'))
  .filter(l => l.offsetParent && l.textContent.match(/[0-9]+\. /))
  .forEach((e, i) => {
    e.innerHTML = e.innerHTML.replace(/[0-9]+\. /, `${i + 1}. `);
```

---

## Redirect using a dropdown

```
function redirect() {
  let field = document.querySelector("input[name='language']");
  if (field) {
    let url = field.value;
    if (url) {
      window.location.href = url;
    }
  }
}

var form = document.forms[0];
const submitButton = form.querySelector('button[type="submit"], input[type="submit"]');

submitButton.addEventListener('click', function(event) {
    // Prevent the default form submission behavior
    event.preventDefault();

    redirect();
});
```

---

## Set value of a field and hide it

```
// set 'resourceType' field to 'SITE_EQUIPMENT' and hide it
let field = document.querySelector("input[name='resourceType']");
if (field) {
  field.readOnly = true;
  field.value = "SITE_EQUIPMENT";
  if (field.parentNode && field.parentNode.parentNode) {
    field.parentNode.parentNode.style.display = "none";
  }
}
```

---

## Custom Form Actions

### Register visitors with timed access

```
{ "workforce": {"name": "registration", "options": { "visitor": true, "accessDuration": 60 } } }
```

### 2-step certification upload actions

Standard for the looping yes/no form to add multiple certifications:

```
{"response": {"name":"add", "options": { "key": "certifications", "type": "array", "attachments": "ids"}},"redirect":"https://us.sitemetric.com/forms/H04AUZ5GQR?r=parentId&more=true"}
```

To skip the yes/no loop, redirect to form using `?p=responseId` and set the following action:

```
{"workforce": {"name":"certification"}}
```

### Manage Worker Labels custom action

```
{"setWorkerLabels": { } }
```

- [Reports](https://go.sitemetric.com/sitemetric-knowledge-base/reports?hsLang=en-us)
- [Integrations](https://go.sitemetric.com/sitemetric-knowledge-base/integrations?hsLang=en-us#main-content)
  
  
  
  
  
    - [How-To Guide](https://go.sitemetric.com/sitemetric-knowledge-base/integrations?hsLang=en-us#how-to-guide)
    - [SOP](https://go.sitemetric.com/sitemetric-knowledge-base/integrations?hsLang=en-us#sop)
- [Internal - Reporting & Data](https://go.sitemetric.com/sitemetric-knowledge-base/internal-reporting-data?hsLang=en-us)
- [Support Request Types](https://go.sitemetric.com/sitemetric-knowledge-base/support-request-types?hsLang=en-us#main-content)
  
  
  
  
  
    - [General Inquiry](https://go.sitemetric.com/sitemetric-knowledge-base/support-request-types?hsLang=en-us#general-inquiry)
    - [Device & Hardware](https://go.sitemetric.com/sitemetric-knowledge-base/support-request-types?hsLang=en-us#device-hardware)
    - [Out of Scope](https://go.sitemetric.com/sitemetric-knowledge-base/support-request-types?hsLang=en-us#out-of-scope)
    - [Installations & Onboarding](https://go.sitemetric.com/sitemetric-knowledge-base/support-request-types?hsLang=en-us#installations-onboarding)
    - [Platform & Application](https://go.sitemetric.com/sitemetric-knowledge-base/support-request-types?hsLang=en-us#platform-application)
    - [Data & Reporting](https://go.sitemetric.com/sitemetric-knowledge-base/support-request-types?hsLang=en-us#data-reporting)
    - [Account & Billing](https://go.sitemetric.com/sitemetric-knowledge-base/support-request-types?hsLang=en-us#account-billing)
- [Internal - Agent & Bot Guidance](https://go.sitemetric.com/sitemetric-knowledge-base/internal-agent-bot-guidance?hsLang=en-us)
- [Product & Platform](https://go.sitemetric.com/sitemetric-knowledge-base/product-platform?hsLang=en-us)
- [Notifications & Messaging](https://go.sitemetric.com/sitemetric-knowledge-base/notifications-messaging?hsLang=en-us#main-content)
  
  
  
  
  
    - [SOP](https://go.sitemetric.com/sitemetric-knowledge-base/notifications-messaging?hsLang=en-us#sop)
    - [How-To Guide](https://go.sitemetric.com/sitemetric-knowledge-base/notifications-messaging?hsLang=en-us#how-to-guide)
    - [Troubleshooting Guide](https://go.sitemetric.com/sitemetric-knowledge-base/notifications-messaging?hsLang=en-us#troubleshooting-guide)
- [Core Support Operations](https://go.sitemetric.com/sitemetric-knowledge-base/core-support-operations?hsLang=en-us#main-content)
  
  
  
  
  
    - [SOP](https://go.sitemetric.com/sitemetric-knowledge-base/core-support-operations?hsLang=en-us#sop)
    - [Reference Guide](https://go.sitemetric.com/sitemetric-knowledge-base/core-support-operations?hsLang=en-us#reference-guide)
    - [Troubleshooting Guide](https://go.sitemetric.com/sitemetric-knowledge-base/core-support-operations?hsLang=en-us#troubleshooting-guide)
    - [Handbook](https://go.sitemetric.com/sitemetric-knowledge-base/core-support-operations?hsLang=en-us#handbook)
    - [Directory/Catalog](https://go.sitemetric.com/sitemetric-knowledge-base/core-support-operations?hsLang=en-us#directory-catalog)
- [Reporting & Data](https://go.sitemetric.com/sitemetric-knowledge-base/reporting-data?hsLang=en-us#main-content)
  
  
  
  
  
    - [Reference Guide](https://go.sitemetric.com/sitemetric-knowledge-base/reporting-data?hsLang=en-us#reference-guide)
    - [Troubleshooting Guide](https://go.sitemetric.com/sitemetric-knowledge-base/reporting-data?hsLang=en-us#troubleshooting-guide)
    - [Directory/Catalog](https://go.sitemetric.com/sitemetric-knowledge-base/reporting-data?hsLang=en-us#directory-catalog)
    - [SOP](https://go.sitemetric.com/sitemetric-knowledge-base/reporting-data?hsLang=en-us#sop)
    - [How-To Guide](https://go.sitemetric.com/sitemetric-knowledge-base/reporting-data?hsLang=en-us#how-to-guide)
- [Admin Portal How-Tos](https://go.sitemetric.com/sitemetric-knowledge-base/admin-portal-how-tos?hsLang=en-us#main-content)
  
  
  
  
  
    - [How-To Guide](https://go.sitemetric.com/sitemetric-knowledge-base/admin-portal-how-tos?hsLang=en-us#how-to-guide)
    - [Handbook](https://go.sitemetric.com/sitemetric-knowledge-base/admin-portal-how-tos?hsLang=en-us#handbook)
    - [Directory/Catalog](https://go.sitemetric.com/sitemetric-knowledge-base/admin-portal-how-tos?hsLang=en-us#directory-catalog)
- [Forms](https://go.sitemetric.com/sitemetric-knowledge-base/forms?hsLang=en-us#main-content)
  
  
  
  
  
    - [Troubleshooting Guide](https://go.sitemetric.com/sitemetric-knowledge-base/forms?hsLang=en-us#troubleshooting-guide)
    - [Directory/Catalog](https://go.sitemetric.com/sitemetric-knowledge-base/forms?hsLang=en-us#directory-catalog)
    - [Reference Guide](https://go.sitemetric.com/sitemetric-knowledge-base/forms?hsLang=en-us#reference-guide)
- [Devices & Hardware](https://go.sitemetric.com/sitemetric-knowledge-base/devices-hardware?hsLang=en-us#main-content)
  
  
  
  
  
    - [SOP](https://go.sitemetric.com/sitemetric-knowledge-base/devices-hardware?hsLang=en-us#sop)
    - [Reference Guide](https://go.sitemetric.com/sitemetric-knowledge-base/devices-hardware?hsLang=en-us#reference-guide)
    - [How-To Guide](https://go.sitemetric.com/sitemetric-knowledge-base/devices-hardware?hsLang=en-us#how-to-guide)
- [Site & Campus Management](https://go.sitemetric.com/sitemetric-knowledge-base/site-campus-management?hsLang=en-us#main-content)
  
  
  
  
  
    - [Reference Guide](https://go.sitemetric.com/sitemetric-knowledge-base/site-campus-management?hsLang=en-us#reference-guide)
    - [SOP](https://go.sitemetric.com/sitemetric-knowledge-base/site-campus-management?hsLang=en-us#sop)
- [User Access & Accounts](https://go.sitemetric.com/sitemetric-knowledge-base/user-access-accounts?hsLang=en-us#main-content)
  
  
  
  
  
    - [Reference Guide](https://go.sitemetric.com/sitemetric-knowledge-base/user-access-accounts?hsLang=en-us#reference-guide)
    - [Troubleshooting Guide](https://go.sitemetric.com/sitemetric-knowledge-base/user-access-accounts?hsLang=en-us#troubleshooting-guide)
    - [SOP](https://go.sitemetric.com/sitemetric-knowledge-base/user-access-accounts?hsLang=en-us#sop)
- [App Features & Product Documentation](https://go.sitemetric.com/sitemetric-knowledge-base/app-features-product-documentation?hsLang=en-us#main-content)
  
  
  
  
  
    - [Reference Guide](https://go.sitemetric.com/sitemetric-knowledge-base/app-features-product-documentation?hsLang=en-us#reference-guide)

- Home
- Products
- Pricing
- Blog
- Company

[![](https://go.sitemetric.com/hubfs/Icon__Wordmark_-_Horizontal_-_Red-1.svg)](https://go.sitemetric.com/?hsLang=en-us)

<https://www.facebook.com/> <https://www.twitter.com/> <https://www.instagram.com/> <https://podcasts.apple.com/> [mailto:email@email.com](mailto:email@email.com)

Copyright © 2026, www.sitemetric.com