- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-03-2015 11:34 AM
Hello SN community,
I'm actually trying to hide all empty fields from a from, I know a simple way with a client script like :
function onLoad() {
if (g_form.getValue('user_name') == '')
g_form.setDisplay('user_name', false);
}
It's perfectly working but when you have 40 fields, it the worst maintenable things ever.
I was wondering if there is a method to get all the name fields in a form, to handle this action in a while statement.
Regards,
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-03-2015 11:55 AM
Romain,
You need to do a GlideAjax for this.
Create a Script Include as:
Name : FieldsAjax
Client Callable : True:
Script:
var FieldsAjax = Class.create();
FieldsAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getFieldsEmpty: function() {
var emptyFields = '';
var gr = new GlideRecord(<<table_name>>);
gr.get(this.getParameter('sysparm_id');
var fields = new GlideRecordUtil().getFields(gr);
for (var num = 0; num < fields.length; num++) {
var field_name = fields[num];
if(gr[field_name] == '')
{
if(emptyFields.length == 0)
{
emptyFields = field_name;
}
else
{
emptyFields += ',' + field_name;
}
}
}
return emptyFields;
});
Now have a onLoad Client Script something like:
var ga = new GlideAjax('FieldsAjax');
ga.addParam('sysparm_name','getFieldsEmpty');
ga.addParam('sysparm_id', g_form.getUniqueValue());
ga.getXMLWait();
var fields = ga.getAnswer();
var fieldArray = fields.split(',');
for(var i=0 ; i < fieldArray.length; i++)
{
g_form.setDisplay(fieldArray[i],false);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-03-2015 11:55 AM
Romain,
You need to do a GlideAjax for this.
Create a Script Include as:
Name : FieldsAjax
Client Callable : True:
Script:
var FieldsAjax = Class.create();
FieldsAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getFieldsEmpty: function() {
var emptyFields = '';
var gr = new GlideRecord(<<table_name>>);
gr.get(this.getParameter('sysparm_id');
var fields = new GlideRecordUtil().getFields(gr);
for (var num = 0; num < fields.length; num++) {
var field_name = fields[num];
if(gr[field_name] == '')
{
if(emptyFields.length == 0)
{
emptyFields = field_name;
}
else
{
emptyFields += ',' + field_name;
}
}
}
return emptyFields;
});
Now have a onLoad Client Script something like:
var ga = new GlideAjax('FieldsAjax');
ga.addParam('sysparm_name','getFieldsEmpty');
ga.addParam('sysparm_id', g_form.getUniqueValue());
ga.getXMLWait();
var fields = ga.getAnswer();
var fieldArray = fields.split(',');
for(var i=0 ; i < fieldArray.length; i++)
{
g_form.setDisplay(fieldArray[i],false);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-03-2015 03:57 PM
Thank you Mani Kanta Korada, it works perfectly.
I got much more than I expected, appreciate a lot,
Have a good day !