using a client script to ensure 2 fields match on a form

patricklatella
Mega Sage

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?

1 ACCEPTED SOLUTION

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.




View solution in original post

29 REPLIES 29

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.




patricklatella
Mega Sage

thanks Shishir!



I ended up with this and it works....however how do I get the field message to clear if the correct entry is then entered?




function onChange(control, oldValue, newValue, isLoading) {


    if (isLoading || newValue == '') {


          return;


    }



    var ID1 = g_form.getValue('emp_workday_id');


    var ID2 = g_form.getValue('emp_workday_id2');


   


    if


  (ID1 == ID2);


    else{


  g_form.showFieldMsg('emp_workday_id2','Your entry does not match, please check the Workday ID # and re-enter','error');


  g_form.clearValue('emp_workday_id2');


    }



}


you can use hideFieldMsg() function to hide the message.


patricklatella
Mega Sage

nevermind on that, got it, thanks!



function onChange(control, oldValue, newValue, isLoading) {



g_form.hideFieldMsg('emp_workday_id2');



if (isLoading || newValue == '') {


return;


}



var ID1 = g_form.getValue('emp_workday_id');


var ID2 = g_form.getValue('emp_workday_id2');



if


(ID1 == ID2);


else{


g_form.showFieldMsg('emp_workday_id2','Your entry does not match, please check the Workday ID # and re-enter','error');


g_form.clearValue('emp_workday_id2');


}



}


oh. you have already figured out that.