Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Field Completion Counter

## Use Case / Requirement
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.

## Solution
A simple onLoad client script that:
- Counts filled vs empty fields
- Shows completion status in an info message
- Updates when fields are modified

## Implementation
Add this as an **onLoad** client script on any form.

## Notes
- Excludes system fields and read-only fields
- Updates in real-time as users fill fields
- Simple and lightweight solution
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
function onLoad() {
// Display field completion counter
showFieldProgress();

// Set up listener for field changes
setupProgressUpdater();

function showFieldProgress() {
var allFields = g_form.getFieldNames();
var visibleFields = [];
var filledFields = 0;

// Count visible, editable fields
for (var i = 0; i < allFields.length; i++) {
var fieldName = allFields[i];

// Skip system fields and hidden/readonly fields
if (fieldName.indexOf('sys_') === 0 ||
!g_form.isVisible(fieldName) ||
g_form.isReadOnly(fieldName)) {
continue;
}
visibleFields.push(fieldName);

// Check if field has value
if (g_form.getValue(fieldName)) {
filledFields++;
}
}
var totalFields = visibleFields.length;
var percentage = totalFields > 0 ? Math.round((filledFields / totalFields) * 100) : 0;

g_form.addInfoMessage('Form Progress: ' + filledFields + '/' + totalFields + ' fields completed (' + percentage + '%)');
}

function setupProgressUpdater() {
// Simple debounced update
var updateTimer;

function updateProgress() {
clearTimeout(updateTimer);
updateTimer = setTimeout(function() {
g_form.clearMessages();
showFieldProgress();
}, 500);
}

// Listen for any field change
var allFields = g_form.getFieldNames();
for (var i = 0; i < allFields.length; i++) {
g_form.addElementChangeListener(allFields[i], updateProgress);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Mandatory Field Highlighter

## Use Case / Requirement
Visually highlight mandatory fields that are empty by adding a red border, making it easier for users to identify which required fields need to be completed.

## Solution
An onLoad client script that:
- Identifies all mandatory fields on the form
- Adds red border styling to empty mandatory fields
- Updates styling when fields are filled
- Provides visual feedback to improve user experience

## Implementation
Add this as an **onLoad** client script on any form where you want to highlight mandatory fields.

## Notes
- Only highlights empty mandatory fields
- Removes highlighting when fields are filled
- Uses CSS border styling for visual emphasis
- Works with standard ServiceNow forms
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
function onLoad() {
// Highlight mandatory fields that are empty
highlightMandatoryFields();

// Set up listeners to update highlighting when fields change
setupFieldListeners();

function highlightMandatoryFields() {
var allFields = g_form.getFieldNames();

for (var i = 0; i < allFields.length; i++) {
var fieldName = allFields[i];

// Check if field is mandatory and visible
if (g_form.isMandatory(fieldName) && g_form.isVisible(fieldName)) {
var fieldValue = g_form.getValue(fieldName);
var fieldElement = g_form.getElement(fieldName);

if (fieldElement) {
if (!fieldValue || fieldValue === '') {
// Add red border for empty mandatory fields
fieldElement.style.border = '2px solid #ff4444';
fieldElement.style.boxShadow = '0 0 5px rgba(255, 68, 68, 0.3)';
} else {
// Remove highlighting for filled mandatory fields
fieldElement.style.border = '';
fieldElement.style.boxShadow = '';
}
}
}
}
}

function setupFieldListeners() {
var allFields = g_form.getFieldNames();

for (var i = 0; i < allFields.length; i++) {
var fieldName = allFields[i];

if (g_form.isMandatory(fieldName)) {
// Add change listener to update highlighting
(function(field) {
g_form.addElementChangeListener(field, function() {
setTimeout(highlightMandatoryFields, 100);
});
})(fieldName);
}
}
}
}
Loading