---
title: "Aggiungi uno script a un modulo"
url: "https://docs.4hse.com/it/forms/add-a-script"
description: "Come scrivere uno script che il modulo esegue all'apertura o quando un campo cambia, e cosa lo script può usare."
---

# Aggiungi uno script a un modulo

Uno script aggiunge al [modulo](/it/forms/) comportamenti automatici durante la compilazione: per esempio, riempie alcuni campi all’apertura, come i dati della sede, oppure aggiorna un campo quando chi compila ne modifica un altro.

Lo script si scrive in JavaScript, nel modulo stesso, con l’editor semplificato o con quello avanzato. Scriverlo richiede conoscenze tecniche del linguaggio.

## Apri lo script

[Sezione intitolata “Apri lo script”](#apri-lo-script)

-   Nell’**editor semplificato**, clicca l’icona **Configurazione** (un ingranaggio) e apri la scheda **Script**. La scheda elenca anche gli id dei campi del modulo.
-   Nell’**editor avanzato**, seleziona l’elemento **Modulo**, il primo della scheda **Albero**, e nel pannello delle proprietà apri la sezione **Input**: lo script si scrive nel campo **Event Map**.

## Scrivi le funzioni

[Sezione intitolata “Scrivi le funzioni”](#scrivi-le-funzioni)

1.  Per eseguire del codice all’apertura del modulo, scrivi una funzione `onInit`.
2.  Per reagire a un evento di un campo, scrivi una funzione che si chiama come l’id del campo seguito da `On` e dal nome dell’evento: `testo_1OnChange` viene eseguita quando cambia il valore del campo `testo_1`.
3.  Le funzioni con un nome diverso sono funzioni di appoggio: si richiamano dalle altre con `this.` davanti al nome, per esempio `this.calcola()`.

L’id di un campo si vede e si cambia così:

-   nell’editor semplificato, con l’azione **Identità campo** (l’ingranaggio accanto al campo), nel campo **Widget Id**;
-   nell’editor avanzato, nella proprietà **ID univoco** del componente.

Ogni id è diverso da quello di ogni altro campo del modulo. Nell’editor semplificato contiene solo lettere, numeri e trattini bassi, e non comincia con un numero.

Questo script, preso dal _Registro presenze del corso_, passa all’intestazione il progetto e la sede dell’elemento da cui il modulo è stato aperto:

```
function onInit(event) {    const context = this.runtime.context || {};    const header = this.getWidget('form-header');    if (header) {        header.project_id = context.project_id;        header.office_id = context.office_id;    }}
```

## Cosa può usare uno script

[Sezione intitolata “Cosa può usare uno script”](#cosa-può-usare-uno-script)

Nel codice

Cosa contiene

`this.root`

il modulo

`this.getWidget(id)`

il campo o componente con quell’id

`this.runtime.context`

l’elemento da cui il modulo è stato aperto: `entity_id`, `entity_type`, `project_id`, `project_country`, `office_id`, `office_country`, `unit_id`, `unit_country`

`this.runtime.target`

il punto di lancio da cui il modulo è stato aperto

`this.nomeFunzione()`

una funzione di appoggio scritta nello script

Un modulo aperto dal file system non parte da un elemento, quindi il contesto può essere incompleto. Se una funzione contiene un errore, il modulo si apre comunque e l’errore compare nella console del browser.

Questo sito è protetto da reCAPTCHA e si applicano le [Norme sulla privacy](https://policies.google.com/privacy?hl=it) e i [Termini di servizio](https://policies.google.com/terms?hl=it) di Google.