Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

ICL Services EM
Giga Contributor

As we know, there are not so many out-of-the-box methods for making a table form more good-looking and user-attractive. Speaking about conditional field highlighting, field style settings are not applicable as they would work only on the list.

Positive solution is suggested by HI knowledge article: How to add an image icon next to a field value on a form. An example of this method is an out-of-the-box client script called 'Highlight VIP Caller'. Generally, it uses Prototype.js Javascript framework, which is not so well-known and widely used comparing to JQuery: http://prototypejs.org/.

So, it is worth trying to play with JQuery library that offers much more interesting and optimal methods for page decoration.

Below there is a couple of ideas for including JQuery functions into client scripts.

First of all, we should not forget about setting to false the 'Isolate script' option:

find_real_file.png

And second, use jQuery.noConflict(); to avoid naming interference.

First example 🢥 Simple case of adding an icon to a caller field on incidents if caller is administrator:

find_real_file.png

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (newValue === '') {
           return;
    } 
    var $jquery = jQuery.noConflict();
    var fieldId = 'sys_display\\.incident\\.caller_id';
    var userField = $jquery('#' + fieldId);
 
    userField.css({backgroundImage: ""});
    var bgPosition = "95% 55%";
    var user = g_form.getValue('caller_id');
    if (user == '6816f79cc0a8016401c5a33be04be441') {
var style = {
backgroundImage: "url(images/icons/administration.gif)",
backgroundRepeat: "no-repeat",
backgroundPosition: bgPosition
}
userField.css(style);
}
}



Second example 🢥 Adding a banner with a fixed position on the incident form which may be useful as a warning/reminder
for involved parties. The banner could be hidden by clicking on it and is transparent to not worsen the visibility of form content.

find_real_file.png

function onChange(control, oldValue, newValue, isLoading, isTemplate) {    
    if (newValue === '') {
         return;
    }    
    var $jquery = jQuery.noConflict();
    $jquery('#incidentBanner').remove(); //remove Previous Banner
    
    var fieldId = 'element\\.incident\\.state';
    var fieldElem = $jquery('#' + fieldId);
    
    var stateValue = g_form.getValue('state'); 
    var stateLabel = g_form.getOption('state', stateValue).text; 
    var priorityValue = g_form.getValue('priority');
    var priorityLabel = g_form.getOption('priority', priorityValue).text;
    var number =  g_form.getValue('number'); 
    
    var bannerContent = "<div id='incidentBanner'>";
          bannerContent += "<img id='bannerIcon' src='/images/icons/icon-warning@2x.png'>"; 
          bannerContent += "<div><strong>" + number + "</strong></div>";
          bannerContent += "<div><strong>State:</strong>&nbsp;" + stateLabel + "</div>";
          bannerContent += "<div><strong>Priority:</strong>&nbsp;" + priorityLabel + "</div></div>";
  
    var bannerStyle = {
        "background-color": "rgba(255, 170, 128, 0.3)", 
        "width": "11%", "border-style": "1px solid", 
        "border": "1px solid rgb(250, 153, 105)", 
        "border-radius": "3px", 
        "position": "fixed", 
        "top": "80px", 
        "right": "30px", 
        "padding": "10px", 
        "z-index": "1000",
        "color": "rgb(186, 62, 0)"
    };
        
    var iconStyle = {       
        "position": "fixed", 
        "top": "95px", 
        "right": "50px"
    };
    
    if ($jquery('document').ready()) {
fieldElem.append(bannerContent); $jquery('#incidentBanner').css(bannerStyle); $jquery('#bannerIcon').css(iconStyle); $jquery('#incidentBanner').click(function() { $jquery(this).slideUp(); $jquery('#bannerIcon').slideUp(); }); } }



Interesting point 🢥 The icon library catalog is located there:
https://<Instance_Name>.service-now.com/nav_to.do?uri=%2Fimage_picker.do


Olga Osipova
ServiceNow developer
ICL Services

Comments
PoojashreeP
Kilo Sage

Hi,

 

I need a help on jQuery, to hide and show the fields in Embedded list based on form field changes.

 

Best Regards,

Pooja

Version history
Last update:
‎03-17-2020 01:38 PM
Updated by: