So markieren Sie leere Textfelder mit einem bestimmten Tipptext mithilfe eines ONLYOFFICE-Makros
ONLYOFFICE-Formulare erleichtern die Erfassung strukturierter Eingaben, aber leere, nicht benötigte Felder bleiben oft unmarkiert. In diesem Blogbeitrag zeigen wir, wie Sie ein Makro erstellen, das entweder alle leeren, nicht benötigten Felder in einem Formular oder nur diejenigen mit einem bestimmten Tipptext hervorhebt.
Erstellen des Makros
1. Abrufen von Formulardaten und Live-Formularobjekten
Das Makro greift zunächst mit Api.GetDocument() auf das aktive Dokument zu. Anschließend werden zwei Informationssätze abgerufen:
- Formulardaten: Mit doc.GetFormsData() erhalten wir eine JSON-Darstellung aller Formularfelder. Diese JSON enthält Eigenschaften wie Schlüssel, Typ, Wert, Tipp und ob das Feld erforderlich ist.
- Live-Formularobjekte: Mit doc.GetAllForms() rufen wir die Live-Objekte dieser Formularfelder ab.
var doc = Api.GetDocument();
var forms = doc.GetAllForms();
var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));
2. Optionale tippbasierte Validierung
Manchmal möchten Sie vielleicht nur leere Felder mit einem bestimmten Tipptext prüfen. In unserem Makro können Sie diese Funktion durch Umschalten der Variable checkSpecificTip aktivieren oder deaktivieren. Beispielsweise möchten Sie möglicherweise nur Felder validieren, deren Tipp „Bitte geben Sie Ihre zweite Adresse ein“ lautet.
// 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. Jedes Formularfeld durchlaufen
Das Makro iteriert dann über jedes Formularfeld in den JSON-Daten. Wir konzentrieren uns nur auf Textformularfelder (mit dem Typ „Text“). Für jedes Textfeld, das nicht als Pflichtfeld gekennzeichnet ist, prüfen wir, ob sein Wert leer ist.
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++;
}
}
}
});
- Feldwertprüfung:
Ein Feld gilt als leer, wenn die JSON-Eigenschaft „value“ fehlt oder nur Leerzeichen enthält. - Tippfilterung:
Wenn „checkSpecificTip“ aktiviert ist, prüfen wir nur Felder, deren Tipp mit dem erforderlichen Tipptext übereinstimmt. - Hervorhebung:
Für Felder, die die Kriterien erfüllen, suchen wir das entsprechende Live-Formularobjekt (durch Abgleich des Schlüssels) und setzen einen frühlingsgrünen Rahmen und einen hellblauen Hintergrund.
4. Protokollierung der Ergebnisse
Schließlich protokolliert das Makro die Gesamtzahl der markierten leeren, nicht benötigten Textfelder.
console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
Vollständiger Makrocode
(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.");
})();
Lassen Sie uns nun unser Makro ausführen und sehen, wie es funktioniert!
Dieses Makro erkennt und markiert automatisch leere Textfelder mit vordefiniertem Platzhaltertext. Das spart Zeit und reduziert repetitive Arbeit. Wir hoffen, es hilft Ihnen, Ihre ONLYOFFICE-Formulare zu optimieren und die Effizienz Ihres gesamten Workflows zu verbessern. Entdecken Sie gerne weitere leistungsstarke ONLYOFFICE-API-Methoden zur Automatisierung und Verbesserung Ihrer Dokumentenroutine. Bei Ideen, Fragen oder Vorschlägen für zukünftige Makros melden Sie sich gerne bei uns. Wir freuen uns auf Ihre Nachricht. Viel Spaß beim Programmieren!
Über den Autor
Erstellen Sie Ihr kostenloses ONLYOFFICE-Konto
Öffnen und bearbeiten Sie gemeinsam Dokumente, Tabellen, Folien, Formulare und PDF-Dateien online.