L'aggiunta di pulsanti a un modulo interattivo consente agli utenti di avviare un'azione, ad esempio l'aggiunta e l'eliminazione di istanze dei sottomoduli che definiscono sezioni quali le righe di articoli all'interno di un modulo di ordine.
Inoltre, è possibile aggiungere al pulsante di eliminazione una descrizione comandi per visualizzare le parole "Elimina elemento" quando l'utente posiziona il cursore sul pulsante. L'uso di pulsanti di eliminazione separati consente agli utenti di rimuovere righe specifiche dal modulo.
Ad esempio, nell'ordine di acquisto interattivo di esempio, a ciascun sottomodulo dettaglio è associato un pulsante di aggiunta e un pulsante di eliminazione contrassegnato da una "X". Quando l'utente fa clic sul pulsante Aggiungi elemento, uno script aggiunge una riga di articolo. In alternativa, quando l'utente fa clic su uno dei pulsanti di eliminazione, uno script elimina la riga di articolo associata.

In alternativa, è possibile utilizzare la finestra di dialogo Generatore azioni del menu Strumenti per creare funzionalità comuni interattive all'interno dei moduli con layout scorrevole, evitando di procedere alla scrittura di script. Vedere
Creazione di azioni all'interno dei moduli.Pulsante Aggiungi elemento
Lo script JavaScript riportato di seguito quando si fa clic sul pulsante Aggiungi elemento, consente agli utenti di aggiungere una riga di articolo al modulo di acquisto interattivo di esempio. Lo script inoltre ricalcola il modulo in modo che il campo Totale includa nel calcolo la nuova riga.
Poiché gli utenti aggiungono solo righe di articoli mediante il pulsante Aggiungi elemento, non è necessario che lo script verifichi il valore (occorrenza) del conteggio minimo.
// Invoke the Instance Manager to add one instance of the detail subform.
_detail.addInstance(1);
//Invoke the recalculate method to include the field values from the added subform in calculations.
xfa.form.recalculate(1);
Pulsante Elimina
Lo script JavaScript riportato di seguito per l'evento clic del pulsante Elimina, consente agli utenti di eliminare un’istanza del sottomodulo dettaglio dal modulo di ordine di acquisto interattivo di esempio mediante il pulsante Elimina. Lo script inoltre ricalcola il modulo in modo che il campo Totale non includa più nel calcolo la riga eliminata.
// Invoke the Instance Manager to remove the current instance of the detail subform.
_detail.removeInstance(this.parent.index);
// Invoke the recalculate method to update the form calculations.
xfa.form.recalculate(1);
Poiché il valore di occorrenza minimo iniziale per il sottomodulo dettaglio è 2, lo script deve ridurre il valore di occorrenza minimo per consentire all'utente che compila il modulo di eliminare le due righe di articoli che vengono visualizzate automaticamente quando si esegue il rendering del modulo. Questo script è stato aggiunto all'evento initialize del sottomodulo dettaglio.
// Reset the minimum occurrence value of the detail subform.
this.occur.min = "0";
Poiché il modulo consente agli utenti di eliminare tutte le istanze del sottomodulo dettaglio, lo script relativo all'evento calculate del campo Totale (numTotal) deve verificare che esista almeno un'istanza del campo numAmount nel sottomodulo dettaglio. In caso contrario, se durante l'operazione di calcolo non viene individuata alcuna occorrenza del campo numAmount, verrà visualizzato un errore. Questo script è stato aggiunto all'evento Calculate del campo numTotal.
// Verify at least one instance of the numAmount field exists.
if (exists(detail[0].numAmount) == 1) then
Sum(detail[*].numAmount)
endif