|
| 1 | +function onChange(control, oldValue, newValue, isLoading) { |
| 2 | + if (isLoading) return; |
| 3 | + |
| 4 | + var passportNumber = g_form.getValue('passport_number'); |
| 5 | + var dateOfIssue = g_form.getValue('date_of_issue'); |
| 6 | + var age = parseInt(g_form.getValue('age'), 10); |
| 7 | + var dateOfExpiry = g_form.getValue('date_of_expiry'); |
| 8 | + |
| 9 | + // Passport Number Validation |
| 10 | + var passportPattern = /^[A-Z][1-9][0-9][A-Z0-9]{5}$/; |
| 11 | + if (passportNumber && !passportPattern.test(passportNumber)) { |
| 12 | + g_form.showFieldMsg('passport_number', "The entered number is invalid passport number format. It must be 8 characters long, start with an uppercase letter, followed by a number between 1-9, then 0-9, and the rest alphanumeric.", "error"); |
| 13 | + g_form.clearValue('passport_number'); |
| 14 | + } else { |
| 15 | + g_form.hideFieldMsg('passport_number'); |
| 16 | + } |
| 17 | + |
| 18 | + // Date of Expiry Calculation based on date of issue |
| 19 | + if (dateOfIssue && age) { |
| 20 | + var issueDate = new GlideDate(); |
| 21 | + issueDate.setValue(dateOfIssue); |
| 22 | + var expiryDate = new GlideDate(); |
| 23 | + expiryDate.setValue(issueDate); |
| 24 | + |
| 25 | + if (age >= 18) { |
| 26 | + expiryDate.addYears(5); // Adult - add 5 years |
| 27 | + } else { |
| 28 | + expiryDate.addYears(10); // Under 18 - add 10 years |
| 29 | + } |
| 30 | + |
| 31 | + g_form.setValue('date_of_expiry', expiryDate.getByFormat('yyyy-MM-dd')); // Set expiry date in correct format |
| 32 | + g_form.hideFieldMsg('date_of_expiry'); |
| 33 | + } else if (!dateOfIssue) { |
| 34 | + g_form.showFieldMsg('date_of_issue', "Please enter the Date of Issue first.", "info"); |
| 35 | + } else if (!age) { |
| 36 | + g_form.showFieldMsg('age', "Please enter your age first.", "info"); |
| 37 | + } |
| 38 | +} |
0 commit comments