Kako naglasiti prazna tekstualna polja sa specifičnim savetom koristeći ONLYOFFICE makro
ONLYOFFICE obrasci olakšavaju prikupljanje strukturiranih unosa, ali prazna polja koja nisu obavezna često ostaju neproverena. U ovom blog postu, demonstriraćemo kako da izgradimo makro koji ističe ili sva prazna neobavezna polja u obrascu ili samo ona koja sadrže specifičan tekst kao savet.
Izgradnja makroa
1. Preuzmi podatke iz forme i žive objekte forme
Makro počinje pristupanjem aktivnom dokumentu korišćenjem Api.GetDocument(). Potom prikupljamo dva seta informacija:
- Oblikovanje podataka: Koristeći doc.GetFormsData(), dobijamo JSON reprezentaciju svih polja forme. Ovaj JSON uključuje svojstva kao što su ključ, tip, vrednost, savet i da li je polje obavezno.
- Živi objekti formi: Koristimo doc.GetAllForms() da bismo dobili žive objekte koji odgovaraju ovim poljima forme.
var doc = Api.GetDocument();
var forms = doc.GetAllForms();
var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));
2. Opciona validacija zasnovana na savetima
Ponekad ćete možda želeti da proverite samo ona prazna polja koja imaju određeni tekst saveta. U našem makrou možete omogućiti ili onemogućiti ovu funkciju tako što ćete prebaciti promenljivu checkSpecificTip. Na primer, možda ćete morati da potvrdite samo polja čiji savet glasi “Unesite svoju drugu adresu”.
// 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. Prođite kroz svako polje forme
Makro zatim ponavlja svako polje obrasca u JSON podacima. Fokusiramo se samo na polja tekstualnog obrasca (gde je tip “tekst”). Za svako tekstualno polje koje nije označeno kao obavezno, proveravamo da li je njegova vrednost prazna.
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++;
}
}
}
});
- Provera vrednosti polja:
Polje se smatra praznim ako nedostaje njegova JSON “vrednost” osobina ili samo razmak. - Filtriranje saveta:
Ako je checkSpecificTip omogućen, proveravamo samo polja čiji saveti odgovaraju requiredTipText. - Isticanje:
Za polja koja ispunjavaju kriterijume, pronalazimo odgovarajući objekat živog oblika (povezivanjem ključa) i postavljamo prolećno zelenu ivicu i svetloplavu pozadinu.
4. Prijavljivanje rezultata
Na kraju, makro beleži ukupni broj praznih nepotrebnih tekstualnih polja koja su istaknuta.
console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
Potpun makro kod
(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.");
})();
Sada, hajde da pokrenemo naš makro i vidimo kako to funkcioniše!
Ova makro funkcija automatski otkriva i označava prazna tekstualna polja koja sadrže unapred definisani tekst kao oznaku, čime se štedi vreme i smanjuje ponavljajući rad. Nadamo se da će vam biti od pomoći u optimizaciji vaših ONLYOFFICE obrazaca i poboljšanju ukupne efikasnosti radnog toka. Ne oklevajte da istražite druge moćne metode ONLYOFFICE API-ja za automatizaciju i unapređenje vaše rutine sa dokumentima. Ako imate ideje, pitanja ili sugestije za buduće makroe, slobodno nas kontaktirajte. Biće nam drago da vas čujemo. Srećno sa kodiranjem!
O autoru
Create your free ONLYOFFICE account
View, edit and collaborate on docs, sheets, slides, forms, and PDF files online.