Come evidenziare campi di testo vuoti con un testo di suggerimento specifico utilizzando una macro ONLYOFFICE
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.
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
Crea il tuo account ONLYOFFICE gratuito
Visualizza, modifica e collabora su documenti, fogli, diapositive, moduli e file PDF online.