Comparing List Collector Values with another variable, if it matches show alert

Nasir1
Tera Expert

Hi,

Sorry it might be a noob question but I have catalog item that has a list collector (employee_current_roles) which auto-populates user's roles with all the roles user is member of, I have another variable (role) on the form that is reference field and users can pick up any roles and log the request.

What I want to do is If any of the roles in list collector matches the value in referenced field I want a pop up to say User is already member of the role but I am not sure if what I am doing is correct, please help.

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var urole = g_form.getValue('role');
    var gr = g_form.getValue('employee_current_roles'); //  getting the List Collector Variable value
    var ar = gr.split(','); // split the list collector by comma
    
    for (var i = 0; i < ar.length; i++); 

    if (ar.indexOf(urole) == -1) //if field values are the same then send alert
       { 
        alert('User is already Member of the Selected role');
        g_form.clearValue('role');
    }

}
   

 

1 ACCEPTED SOLUTION

That's strange issue,

Can you try adding below alert to see what values those variables are storing:

function onChange(control, oldValue, newValue, isLoading) {
	if (isLoading || newValue == '') {
		return;
	}
	var urole = g_form.getValue('role');
	var gr = g_form.getValue('employee_current_roles'); //  getting the List Collector Variable value

	if (gr.indexOf(urole) > -1) //if field values are the same then send alert
	{ 
                alert("gr value :"+gr+" urole : "+urole);
		alert('User is already Member of the Selected role');
	}

}

with new alert you might understand the exact issue else show me the alert data you are getting so that I can help you further.

Let me know if you have any further queries.

Please mark this as Correct or Helpful if it helps.

Thanks and Regards,
Abhijit
Community Rising Star 2022

By marking my response as correct or helpful, you contribute to helping future readers with similar issues.
Regards,
Abhijit
ServiceNow MVP

View solution in original post

32 REPLIES 32

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

update as this

function onChange(control, oldValue, newValue, isLoading) {
	if (isLoading || newValue == '') {
		return;
	}
	var urole = g_form.getValue('role');
	var gr = g_form.getValue('employee_current_roles'); //  getting the List Collector Variable value

	if (gr.indexOf(urole) > -1) //if field values are the same then send alert
	{ 
		alert('User is already Member of the Selected role');
		g_form.clearValue('role');
	}

}

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

That is exactly what I got but still pop up keeps happening for other choice too 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var urole = g_form.getValue('role');
    var gr = g_form.getValue('employee_current_roles'); //  getting the List Collector Vriable value
  
    if (gr.indexOf(urole) > -1);
  
    {
        alert('User is already Member of the Selected role');
        g_form.clearValue('role');
    }

}

Hi,

onChange is written on which variable?

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Hi Ankur,

 

Any Ideas?

 

Thanks

Nasir

Mohith Devatte
Tera Sage
Tera Sage

Hello ,

can you try this below script 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var urole = g_form.getValue('role');
    var gr = g_form.getValue('employee_current_roles'); //  getting the List Collector Variable value
    var ar = gr.split(','); // split the list collector by comma
    
    for (var i = 0; i < ar.length; i++); 

    if (ar[i].indexOf(urole) >0) //if field values are the same then send alert
       { 
        alert('User is already Member of the Selected role');
        g_form.clearValue('role');
    }

}
   

PLEASE MARK MY ANSWER CORRECT IF IT HELPS YOU