- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-02-2017 10:16 AM
Hi all,
I'm creating a form for new hires, and on the form I want to have 2 fields where the user enters the new employee's ID #. The intention of the 2nd field is to ensure that they enter the number correctly, much like when you have to repeat an email address or a password on banking stuff.
the 2 variables that need to match are:
emp_workday_id
emp_workday_id2
So the user first enters the value in the first field, and then needs to add the value again in the 2nd field (emp_workday_id2). What need is, if the fields do match, then it triggers a GlideAjax to lookup the user record to populate some other fields on the form. I have this part in place and working.
If the 2 fields do not match, I need it to stop and give an alert that the 2 fields do not match. Should I be putting this all in one catalog client script? I'm thinking yes, but please advise.
function onChange(control, oldValue, newValue, isLoading) {
if (newValue == ''){
g_form.setValue('first_name','');//name of field on form you want to auto populate
g_form.setValue('last_name','');//name of field on form you want to auto populate
g_form.setValue('supervisor','');//name of field on form you want to auto populate
g_form.setValue('emp_location','');//name of field on form you want to auto populate
}
var ga = new GlideAjax('u_employee_details_lookup_Ajax');//name of script include
ga.addParam('sysparm_name', 'getEmployeeDetails');//name of function on script include
ga.addParam('sysparm_user', g_form.getValue('emp_workday_id2'));//name of field on form triggering call
ga.getXML(EmployeeDetailsLookup); // Always try to use asynchronous (getXML) calls rather than synchronous (getXMLWait)
}
// Callback function to process the response returned from the server
function EmployeeDetailsLookup(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var answers = answer.split(',');
g_form.setValue('first_name',answers[0]);
g_form.setValue('last_name',answers[1]);
g_form.setValue('supervisor',answers[2]);
g_form.setValue('emp_location',answers[3]);
}
now for the part that ensure the 2 fields I match I need help folding in something like this?
var ID1
var ID2
ID1=g_form.getValue(emp_workday_id);
ID2='current.emp_workday_id2';
//then something like
if ID1=ID2//then it goes on to the GlideAjax line in my script above
else sMessage = 'Your entry does not match, please check the Workday ID number and re-enter.'; //and stop them from moving forward
am I headed in the right direction?
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-02-2017 07:44 PM
in this script showFieldMsg() syntax is wrong, please change it something like, and it should display the messge.
g_form.showFieldMsg('emp_workday_id2' ,'Your entry does not match, please check the Workday ID # and re-enter');
Also, in earlier provided client script if condition has to be correct.
if (newValue == g_form.getValue('emp_workday_id')) field name is not in quotes
please check if this helps.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-02-2017 10:42 AM
both fields will be mandatory, here's a screen shot:
so I'm shooting to do is to make sure the user doesn't do a typo in the first "Workday Employee Number" field, so having them re-enter builds in the gotcha to avoid that. So if the entry in the "Re-enter Workday Employee Number" field does not match, then I want it to stop them and alert them to double check the number.
If they do match, then I want the part of my script that is working to activate to populate other 4 fields.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-02-2017 10:43 AM
I don't have them set to mandatory yet for testing purposes, but they will be mandatory
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-02-2017 10:46 AM
Perfect then simply use the below script. It will work perfectly.
else alert('Your entry does not match, please check the Workday ID number and re-enter.');
g_form.clearValue('ID2', '');
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-02-2017 10:52 AM
Instead of alert message if you want to use addErrorMessage() API then u have to use g_form.clearMessages() API too otherwise every time for unmatch you will get one error msg and it will show as a list on top of the form.
This case you have to use script like this:
else g_form.clearMessages('ID2');
g_form.addErrorMessage('Your entry does not match, please check the Workday ID number and re-enter.');
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-02-2017 11:06 AM
Let me look a step back:
As per my understanding we have four scenarios:
Scenario-1: ID1 matches ID2 and ID1/ID2 exist in user table.
Scenario-2: ID1 does not matches ID2 and ID1 exist in user table.
Scenario-3: ID1 matches ID2 and ID1/ID2 does not exist in user table.
Scenario-4: ID1 does not matches ID2 and ID1 does not exist in user table.
Solutions:
To address all the scenarios, Along with your existing script, you need to write one more Catalog Client script. Which will be a GlideAjax Script and that will check whether ID1 is correctly entered or not.
That will be an onchange script for ID1 field. and will verify the User table if entered record is found in user table then go forward else display an error msg saying "ID1 field entered incorrect value".