diff --git a/Client-Side Components/Client Scripts/Date Range Validation (Within 30 Days)/README.md b/Client-Side Components/Client Scripts/Date Range Validation (Within 30 Days)/README.md new file mode 100644 index 0000000000..b020f6f58d --- /dev/null +++ b/Client-Side Components/Client Scripts/Date Range Validation (Within 30 Days)/README.md @@ -0,0 +1,10 @@ +Date Range Validation (Within 30 Days) in Client Side + +This ServiceNow client script provides real-time date validation for form fields, ensuring users can only select dates within a specific 30-day window from today's date. The script runs automatically when a user changes a date field value, providing immediate feedback and preventing invalid date submissions. + +The script validates that any date entered in a form field meets these criteria: +Minimum Date: Today's date (no past dates allowed) +Maximum Date: 30 days from today's date +Real-time Validation: Instant feedback as users type or select dates +User-friendly Errors: Clear error messages explaining the valid date range +Automatic Field Clearing: Invalid dates are automatically cleared to prevent submission diff --git a/Client-Side Components/Client Scripts/Date Range Validation (Within 30 Days)/dateRangeValidation.js b/Client-Side Components/Client Scripts/Date Range Validation (Within 30 Days)/dateRangeValidation.js new file mode 100644 index 0000000000..5c9f15fd1c --- /dev/null +++ b/Client-Side Components/Client Scripts/Date Range Validation (Within 30 Days)/dateRangeValidation.js @@ -0,0 +1,23 @@ +function onChange(control, oldValue, newValue, isLoading, isTemplate) { + if (isLoading || newValue === '') { + return; + } + + var todayDate = new Date(); + var futureDate = new Date(); + futureDate.setDate(futureDate.getDate() + 30); + + var todayDateStr = formatDate(todayDate, g_user_date_format); + var futureDateStr = formatDate(futureDate, g_user_date_format); + + var selectedDateNum = getDateFromFormat(newValue, g_user_date_format); + var todayDateNum = getDateFromFormat(todayDateStr, g_user_date_format); + var futureDateNum = getDateFromFormat(futureDateStr, g_user_date_format); + + if (selectedDateNum < todayDateNum || selectedDateNum > futureDateNum) { + g_form.showFieldMsg(control, 'Date must be between today and 30 days from today', 'error'); + g_form.clearValue(control); + } else { + g_form.hideFieldMsg(control); + } +}