Come evidenziare campi di testo vuoti con un testo di suggerimento specifico utilizzando una macro ONLYOFFICE

24 aprile 2025Da Alice

I campi dei moduli in ONLYOFFICE semplificano la raccolta di input strutturati, ma quelli non obbligatori e lasciati vuoti spesso passano inosservati. In questo post del blog, mostriamo come creare una macro che evidenzia tutti i campi vuoti non obbligatori di un modulo o solo quelli che contengono un testo guida specifico.

How to highlight empty text fields with a specific tip text using an ONLYOFFICE macro

Creazione della macro

1. Recupero dei dati e degli oggetti modulo attivi

La macro inizia accedendo al documento attivo tramite `Api.GetDocument()`. Successivamente, vengono recuperate due serie di informazioni:

  • Dati dei moduli: Utilizzando `doc.GetFormsData()`, otteniamo una rappresentazione JSON di tutti i campi modulo. Questo JSON include proprietà come chiave, tipo, valore, suggerimento e obbligatorietà del campo.
    var doc = Api.GetDocument();
    var forms = doc.GetAllForms();
    var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));

2. Validazione opzionale basata sul suggerimento

A volte potresti voler controllare solo i campi vuoti che contengono un testo guida specifico. Nella nostra macro, puoi attivare o disattivare questa funzionalità modificando la variabile `checkSpecificTip`. Ad esempio, potresti dover validare solo i campi il cui suggerimento è “Please enter your second address.”

   // Optional: set to true to check only fields with a specific tip text.
    var checkSpecificTip = false;
    var requiredTipText = "Please enter your second address"; // Change this as needed.

3. Ciclo su ciascun campo modulo

La macro scorre ciascun campo nel JSON dei dati. Si concentra solo sui campi di tipo testo (dove il tipo è “text”). Per ogni campo di testo non obbligatorio, controlla se il valore è vuoto.

 forms.forEach(function(form) {
        if (form.GetFormType() === "textForm") {
            var key = form.GetFormKey();
            var required = form.IsRequired()
            // Find corresponding form data by key.
            var formData = formsData.find(function(fd) {
                return fd.key === key;
            });
            if (formData) {
                // A field is considered empty if its value is missing or only whitespace.
                var isEmpty = !formData.value || formData.value.trim() === "";
                // Use the live form's GetTip() to get the tip (if available).
                var tip = form.GetTipText() ? form.GetTipText() : "";
                
                var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());


                if (shouldCheck && isEmpty && !required) {
                    form.SetBorderColor(0,255,127); // spring green border.
                    form.SetBackgroundColor(171, 242, 255); // Light blue background.
                    invalidCount++;
                }
            }
        }
    });
  • Controllo del valore del campo: Un campo è vuoto se la proprietà “value” nel JSON è assente o contiene solo spazi.
  • Filtraggio per suggerimento: Se `checkSpecificTip` è attivo, vengono controllati solo i campi con suggerimento che corrisponde a `requiredTipText`.
  • Evidenziazione: I campi che soddisfano i criteri vengono evidenziati con un bordo verde e uno sfondo azzurro chiaro.

4. Registrazione dei risultati

Infine, la macro registra il numero totale di campi di testo non obbligatori e vuoti che sono stati evidenziati.

console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");

Codice macro completo

(function () {
    // Optional: set to true to check only fields with a specific tip text.
    var checkSpecificTip = false;
    var requiredTipText = "Please enter your second address"; // Change this as needed.


    var doc = Api.GetDocument();
    var forms = doc.GetAllForms();
    var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));
    var invalidCount = 0;



    forms.forEach(function(form) {
        if (form.GetFormType() === "textForm") {
            var key = form.GetFormKey();
            var required = form.IsRequired()
            // Find corresponding form data by key.
            var formData = formsData.find(function(fd) {
                return fd.key === key;
            });
            if (formData) {
                // A field is considered empty if its value is missing or only whitespace.
                var isEmpty = !formData.value || formData.value.trim() === "";
                // Use the live form's GetTip() to get the tip (if available).
                var tip = form.GetTipText() ? form.GetTipText() : "";
                
                var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());


                if (shouldCheck && isEmpty && !required) {
                    form.SetBorderColor(0,255,127); // spring green border.
                    form.SetBackgroundColor(171, 242, 255); // Light blue background.
                    invalidCount++;
                }
            }
        }
    });
    console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
})();

Ora lanciamo la macro e vediamola in azione!

Questa macro rileva ed evidenzia automaticamente i campi di testo vuoti che contengono un testo guida predefinito, facendo risparmiare tempo e riducendo il lavoro ripetitivo. Speriamo possa esserti utile per ottimizzare i tuoi moduli in ONLYOFFICE e migliorare l’efficienza generale del flusso di lavoro. Non esitare a esplorare altri potenti metodi dell’API ONLYOFFICE per automatizzare e migliorare la tua routine sui documenti. Se hai idee, domande o suggerimenti per future macro, sentiti libero di contattarci. Ci farebbe piacere ricevere il tuo feedback. Buona programmazione!

Sull’autore

How to highlight empty text fields with a specific tip text using an ONLYOFFICE macro

Crea il tuo account ONLYOFFICE gratuito

Visualizza, modifica e collabora su documenti, fogli, diapositive, moduli e file PDF online.