how to compare reference fields

pk2184046
Tera Expert
function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
   
return;
   }

   var lm=g_form.getReference('line_manager');
    var dm=g_form.getReference('director_approval');
   var gm=g_form.getReference('general_approval');

   if(lm.employee_number == dm.employee_number || lm.employee_number==gm.employee_number || dm.employee_number==gm.employee_number){


 alert("hi");
   g_form.clearValue('line_manager');
    g_form.clearValue('director_approval');
      g_form.clearValue('general_approvals');
   }
   
}
 
I tried this showing as javascript error.
 
I have 3 reference fields on the form where user selects managers
so the managers are to be unique and if it same then it gives an alert and clears the value

@Rupanjani can you help here

Thanks advance

1 ACCEPTED SOLUTION

Rupanjani
Giga Guru

Hi @pk2184046 

 

Try above code can clear all the values if one is matched.
You need to write onChange client script on every field

 

onChange Client script when line manager is set/changed

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

   var lm=g_form.getValue('line_manager');
   var dm=g_form.getValue('director_approval');
   var gm=g_form.getValue('general_approval');

if(dm != '' && gm != ''){   
   if(lm == dm){
       g_form.clearValue('line_manager');
       g_form.showFieldMsg('line_manager', 'Line Manager and Director approver can not be same', 'error');
   } else if (lm == gm) {
       g_form.clearValue('line_manager');
       g_form.showFieldMsg('line_manager', 'Line Manager and General approver can not be same', 'error');
   } 
}
}

 

onChange client script when Director approver is set/changed

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
return;
   }

   var lm=g_form.getValue('line_manager');
   var dm=g_form.getValue('director_approval');
   var gm=g_form.getValue('general_approval');

if(lm != '' && gm != ''){   
   if(dm == lm){
       g_form.clearValue('director_approval');
       g_form.showFieldMsg('director_approval', 'Director approver and Line Manager can not be same', 'error');
   } else if (dm == gm) {
       g_form.clearValue('director_approval');
       g_form.showFieldMsg('director_approval', 'Director approver and General approver can not be same', 'error');
   } 
}
}

 

onChange client script when general approver is set/changed.

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

   var lm=g_form.getValue('line_manager');
   var dm=g_form.getValue('director_approval');
   var gm=g_form.getValue('general_approval');

if(lm != '' && dm != ''){   
   if(gm == lm){
       g_form.clearValue('general_approval');
       g_form.showFieldMsg('general_approval', 'General Approver and Line Manager can not be same', 'error');
   } else if (gm == dm) {
       g_form.clearValue('general_approval');
       g_form.showFieldMsg('general_approval', 'General Approver and Director approver can not be same', 'error');
   } 
}
}

 

Modify the error messages as required.

 


Mark the response correct and helpful if the answer assisted your question.

View solution in original post

3 REPLIES 3

Rupanjani
Giga Guru

Hi @pk2184046,

 

You can check with g_form.getValue() instead of getReference().

For reference fields, getValue will be returned as the sys_id.

 

Try below script and check.

 

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
   
return;
   }

   var lm=g_form.getValue('line_manager');
   var dm=g_form.getValue('director_approval');
   var gm=g_form.getValue('general_approval');

   if(lm == dm || lm == gm || dm == gm){
   alert("hi");
   g_form.addErrorMessage('Line Manager, Director Approval and General Approval needs to be different.)
   g_form.clearValue('line_manager');
   g_form.clearValue('director_approval');
   g_form.clearValue('general_approvals');
   }
   
}

 

 


Mark the response correct and helpful if the answer assisted your question.

Rupanjani
Giga Guru

Hi @pk2184046 

 

Try above code can clear all the values if one is matched.
You need to write onChange client script on every field

 

onChange Client script when line manager is set/changed

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

   var lm=g_form.getValue('line_manager');
   var dm=g_form.getValue('director_approval');
   var gm=g_form.getValue('general_approval');

if(dm != '' && gm != ''){   
   if(lm == dm){
       g_form.clearValue('line_manager');
       g_form.showFieldMsg('line_manager', 'Line Manager and Director approver can not be same', 'error');
   } else if (lm == gm) {
       g_form.clearValue('line_manager');
       g_form.showFieldMsg('line_manager', 'Line Manager and General approver can not be same', 'error');
   } 
}
}

 

onChange client script when Director approver is set/changed

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
return;
   }

   var lm=g_form.getValue('line_manager');
   var dm=g_form.getValue('director_approval');
   var gm=g_form.getValue('general_approval');

if(lm != '' && gm != ''){   
   if(dm == lm){
       g_form.clearValue('director_approval');
       g_form.showFieldMsg('director_approval', 'Director approver and Line Manager can not be same', 'error');
   } else if (dm == gm) {
       g_form.clearValue('director_approval');
       g_form.showFieldMsg('director_approval', 'Director approver and General approver can not be same', 'error');
   } 
}
}

 

onChange client script when general approver is set/changed.

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

   var lm=g_form.getValue('line_manager');
   var dm=g_form.getValue('director_approval');
   var gm=g_form.getValue('general_approval');

if(lm != '' && dm != ''){   
   if(gm == lm){
       g_form.clearValue('general_approval');
       g_form.showFieldMsg('general_approval', 'General Approver and Line Manager can not be same', 'error');
   } else if (gm == dm) {
       g_form.clearValue('general_approval');
       g_form.showFieldMsg('general_approval', 'General Approver and Director approver can not be same', 'error');
   } 
}
}

 

Modify the error messages as required.

 


Mark the response correct and helpful if the answer assisted your question.

Hi Rupa,

 

Thank you for the response.

Small modifications to the script it worked.

Thanks again