How to auto populate field value from List collector to String field

MS17
Tera Contributor

Hi All,

In a knowledge form, we have a field called "OpCo (List Collector)", If we have selected any value in the OpCo field (ex: FXE,FXO), this should be populated in the prefix of short description field. I have written onload client script, but instead of choice name, the value is populated, can anyone help me on this? see below images for reference.

Onload Client script:

function onLoad() {
//Type appropriate comment here, and begin script below
var list = g_form.getValue('u_opcom').toString();
alert(list);
var array = list.split(',');
for (var i=0; i < array.length; i++) {
g_form.addInfoMessage("This should be the list collector value " + array[i]);
var shortDesc = g_form.getValue('short_description');
g_form.setValue('short_description', array[i].toString() + ' , ' + shortDesc);
}
}

 

kn.PNG

 

Here 2 and 1 are the choice value of FXE and FXO.

kn1.PNG

Thanks.

 

2 ACCEPTED SOLUTIONS

Gopi Naik1
Kilo Sage

Hi @MS17 ,

 

Create a client callable script include as follows:

 

var GetKbArticles = Class.create();
GetKbArticles.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getWatchList:function(){
var id = this.getParameter('sysparm_sysID');
var watchlist;
var kb=new GlideRecord('kb_knowledge');
if(kb.get(id.toString())){
watchlist=kb.getDisplayValue('u_opcom');
}
return watchlist.toString();
},
type: 'GetKbArticles'
});

 

And call in client script.

 

function onLoad() {
//Type appropriate comment here, and begin script below
if (!g_form.isNewRecord()) {
var arr = [];
var ga = new GlideAjax('GetKbArticles');
ga.addParam('sysparm_name', "getWatchList");
ga.addParam('sysparm_sysID', g_form.getUniqueValue());
ga.getXMLAnswer(function(answer) {
arr = answer.split(',');
for (var i = 0; i < arr.length; i++) {
g_form.addInfoMessage("This should be the list collector value " + arr[i]);
var shortDesc = g_form.getValue('short_description');
g_form.setValue('short_description', arr[i].toString() + ' , ' + shortDesc);
}

});
}
}

 

 

If my solutions helps you to resolve the issue, Please accept solution and Hit "Helpful".

Thanks,
Gopi

View solution in original post

You can use below :

function onLoad() {
    var list = g_form.getValue('u_opcom').toString();
    var shortDesc = g_form.getValue('short_description').split(':');
    if (shortDesc.length > 1)
        shortDesc = shortDesc[1];
    else
        shortDesc = shortDesc[0];

    var op = [];
    var array = list.split(',');
    for (var i = 0; i < array.length; i++) {
        if (array[i] == '1')
            op.push('FXO');
        if (array[i] == '2')
            op.push('FXE');
    }
if(op.length>0)
       g_form.setValue('short_description', op.toString() + ':' + shortDesc); // here : is used to separate OpCo and short description

}
Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

View solution in original post

21 REPLIES 21

Anil Lande
Kilo Patron

If you have limited options then you may try below:

 

function onLoad() {
//Type appropriate comment here, and begin script below
var list = g_form.getValue('u_opcom').toString();
alert(list);
var array = list.split(',');
for (var i=0; i < array.length; i++) {
var op ='';
if(array[i]=='1')
   op = op+'FXO, ';
if(array[i]=='2')
op=op+'FXE,';

}

var shortDesc = g_form.getValue('short_description');
g_form.setValue('short_description', op + shortDesc);
}

 

Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

MS17
Tera Contributor

Hi @Anil Lande,

If we have selected 2 values (FXE, FXO) from the OpCo field, it is only populating 1 value in prefix of short description. how to populate values if we select multiple values?kn2.PNG

Thanks.

Use var op=''; outside the for loop.

 

 

If my solutions helps you to resolve the issue, Please accept solution and Hit "Helpful".

Thanks,
Gopi

Can you please share your script?

function onLoad() {
//Type appropriate comment here, and begin script below
var list = g_form.getValue('u_opcom').toString();
alert(list);
var op ='';
var array = list.split(',');
for (var i=0; i < array.length; i++) {
if(array[i]=='1')
   op = op+'FXO, ';
if(array[i]=='2')
   op = op+'FXE,';
}
var shortDesc = g_form.getValue('short_description');
g_form.setValue('short_description', op + shortDesc);
}

 

or compare with the this updated script.

 

Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande