How to Remove Value from field
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-08-2022 11:16 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-11-2022 11:46 AM
Hi
I have tried your code. seems to be everything is good.
There might be some issue , after removing parent "A" value from PR Parent, leftover Parent values "B", "c" populating in PR child, this is not correct.
1. I think , we have to pass "PR Child " field values into "new_array2"
2. after "A " deselected in Parent, I think we have to pass left over Parent values into "uns "
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
var old_array = oldValue.toString().split(',');
var new_array = newValue.toString().split(',');
var new_array2 = new_array;
var old_count = old_array.length;
var new_count = new_array.length;
var unique_array = [];
if (old_count > new_count) //it means values are removed
{
for (var i = 0; i < old_count; i++) {
if (new_array.indexOf(old_array[i]) == '-1') {
unique_array.push(old_array[i]);
}
}
var uns = unique_array.join(',');
alert(uns);
var ga = new GlideAjax('ListFieldValues'); //client callable script include name
ga.addParam('sysparm_name', 'getDetails');
ga.addParam('sysparm_par', uns);
ga.getXMLAnswer(callback);
}
function callback(response) {
var all_child_array = response.split(',');
alert("all_child_array :" + all_child_array);
for (var i = 0; i < new_count; i++) {
if (all_child_array.indexOf(new_array[i]) != '-1') {
var ind = new_array2.indexOf(new_array[i]);
alert(ind);
new_array2.splice(ind, 1);
}
}
alert("new_array2 :" + new_array2);
g_form.setValue('u_pr_child', new_array2.join(','));
}
}
Script Include :
var ListFieldValues = Class.create();
ListFieldValues.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getDetails: function() {
var childs = [];
var par = this.getParameter('sysparm_par');
gs.addInfoMessage(gs.getMessage("PR :" + par));
var gr = new GlideRecord('u_pr_details'); //update table name
gr.addEncodedQuery("u_parent.sys_idIN" + par); //update parent field name as "field_nameIN";
gr.query();
while (gr.next()) {
childs.push(gr.sys_id.toString());
}
var childs_string = childs.join(",");
return childs_string;
},
type: 'ListFieldValues'
});

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-12-2022 08:59 AM
In script include, in the line
childs.push(gr.sys_id);
Instead of gr.sys_id, use gr.field_name
Here field name refers to the name field in that PR table.
Regards,
Sumanth
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2022 06:53 AM
Hi
below code working
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
//Type appropriate comment here, and begin script below
var old_array = oldValue.toString().split(',');
var new_array = newValue.toString().split(',');
alert("New Array :" + new_array);
var new_array2 = g_form.getValue('u_pr_child').toString().split(',');
alert("New Array 2 :" + new_array2);
var old_count = old_array.length;
var new_count = new_array.length;
var unique_array = [];
var ind = [];
if (old_count > new_count) //it means values are removed
{
for (var i = 0; i < old_count; i++) {
if (old_array.indexOf(new_array[i]) > -1) {
unique_array.push(new_array[i]);
}
}
var uns = unique_array.join(',');
alert("uns " + uns);
var ga = new GlideAjax('ListFieldValues'); //client callable script include name
ga.addParam('sysparm_name', 'getDetails');
ga.addParam('sysparm_par', uns);
ga.getXMLAnswer(callback);
}
function callback(response) {
var all_child_array = response.split(',');
alert("all_child_array :" + all_child_array);
for (var j = 0; j < all_child_array.length; j++) {
if (new_array2.indexOf(all_child_array[j]) > -1) {
ind.push(all_child_array[j]);
}
}
alert("ind :" + ind);
g_form.setValue('u_pr_child', ind.join(','));
}
}
var ListFieldValues = Class.create();
ListFieldValues.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getDetails: function() {
var childs = [];
var par = this.getParameter('sysparm_par');
gs.addInfoMessage(gs.getMessage("PR :" + par));
var gr = new GlideRecord('u_pr_details'); //update table name
gr.addEncodedQuery("u_parent.sys_idIN" + par); //update parent field name as "field_nameIN";
gr.query();
while (gr.next()) {
childs.push(gr.sys_id.toString());
}
var childs_string = childs.join(",");
return childs_string;
},
type: 'ListFieldValues'
});