Skip to content

Commit 7c1eaa3

Browse files
authored
added form validator code snippet (#1675)
1 parent 5748f61 commit 7c1eaa3

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Field Completion Counter
2+
3+
## Use Case / Requirement
4+
Display a simple message showing how many fields are completed vs total fields on a form. This helps users track their progress while filling out forms.
5+
6+
## Solution
7+
A simple onLoad client script that:
8+
- Counts filled vs empty fields
9+
- Shows completion status in an info message
10+
- Updates when fields are modified
11+
12+
## Implementation
13+
Add this as an **onLoad** client script on any form.
14+
15+
## Notes
16+
- Excludes system fields and read-only fields
17+
- Updates in real-time as users fill fields
18+
- Simple and lightweight solution
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
function onLoad() {
2+
// Display field completion counter
3+
showFieldProgress();
4+
5+
// Set up listener for field changes
6+
setupProgressUpdater();
7+
8+
function showFieldProgress() {
9+
var allFields = g_form.getFieldNames();
10+
var visibleFields = [];
11+
var filledFields = 0;
12+
13+
// Count visible, editable fields
14+
for (var i = 0; i < allFields.length; i++) {
15+
var fieldName = allFields[i];
16+
17+
// Skip system fields and hidden/readonly fields
18+
if (fieldName.indexOf('sys_') === 0 ||
19+
!g_form.isVisible(fieldName) ||
20+
g_form.isReadOnly(fieldName)) {
21+
continue;
22+
}
23+
visibleFields.push(fieldName);
24+
25+
// Check if field has value
26+
if (g_form.getValue(fieldName)) {
27+
filledFields++;
28+
}
29+
}
30+
var totalFields = visibleFields.length;
31+
var percentage = totalFields > 0 ? Math.round((filledFields / totalFields) * 100) : 0;
32+
33+
g_form.addInfoMessage('Form Progress: ' + filledFields + '/' + totalFields + ' fields completed (' + percentage + '%)');
34+
}
35+
36+
function setupProgressUpdater() {
37+
// Simple debounced update
38+
var updateTimer;
39+
40+
function updateProgress() {
41+
clearTimeout(updateTimer);
42+
updateTimer = setTimeout(function() {
43+
g_form.clearMessages();
44+
showFieldProgress();
45+
}, 500);
46+
}
47+
48+
// Listen for any field change
49+
var allFields = g_form.getFieldNames();
50+
for (var i = 0; i < allFields.length; i++) {
51+
g_form.addElementChangeListener(allFields[i], updateProgress);
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)