---
sourceDocument: Yokohama Build or modify applications
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/yokohama/application-development

 Release :

    - yokohama

ft:locale :

    - en-US

ft:publication_title :

    - Yokohama Build or modify applications

ft:clusterId :

    - cadev

bundleId :

    - cadev

workflow :

    - Development, Data, and Analytics


---

# Field script use cases

# Field script use cases {#ariaid-title1}

* Release version: Yokohama
* 
* Updated March 12, 2026
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 minutes to read

Summarize  
![AI sparkle icon](https://servicenow.com/docs/portal-asset/ai-sparkle-icon) Summarized using AI  
This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.  

## Summary of Field script use cases

This content provides practical examples of client and server-side scripts for customizing fields within ServiceNow forms.
These scripts enable automatic field population, validation, UI enhancements, and data cleanup tailored to specific business needs.
The scripts are examples developed for particular instances and are offered as-is, requiring thorough testing before deployment.
They are not officially supported by Now Support but can be discussed in the community forum.
Show full answer Show less  

## Key Use Cases

* **Automatically Populate a Field:** A client script that auto-fills the *Short Description* field on an Incident form based on the selected *Subcategory*, by querying a custom lookup table. This improves data consistency and user efficiency.
* **Disable HTML Tags in Descriptions:** A server-side script that sanitizes *Description* and *Short Description* fields by replacing `<script>` tags with non-executing text, enhancing security by preventing script injection.
* **Trim Leading and Trailing Spaces:** A server-side script that removes unnecessary spaces from *FirstName* and *LastName* fields on the *sysuser* table, ensuring cleaner and more accurate user data.
* **Flash Field Labels:** A client script that causes a field label (e.g., Incident Number) to flash for a specified duration and color, useful for drawing user attention to important fields.
* **Make Field Labels Bold:** A client script that styles a field label (e.g., Short Description) in bold font to visually emphasize key fields.
* **Make Fields Read-Only:** A client script that sets multiple Incident form fields (such as Incident State, Impact, Urgency, Priority, Configuration Item, Assigned To) to read-only when the Incident State is in specific statuses, including disabling lookup icons to prevent modifications.
* **Set Current Date/Time in Fields:** Demonstrates how to use `GlideAjax` to retrieve the current date and time from the server and set it in a date/time field on the client side, ensuring proper formatting and time zone handling.
* **Toggle Timer Field by Name:** A client script that programmatically starts or stops a timer widget on a form field by simulating user clicks, useful for time tracking or workflow automation.

## Practical Benefits for ServiceNow Customers

* Improve form data quality and consistency through automated field population and input sanitization.
* Enhance user experience by visually highlighting important fields and controlling field editability based on record state.
* Ensure accurate time and date data with server-synchronized values.
* Enable advanced UI interactions such as timer toggling without requiring user manual input.
* Provide reusable script examples that can be adapted and extended to meet specific organizational requirements.

## Important Considerations

These scripts are samples and not officially supported by Now Support. Customers should thoroughly test them in their environments before implementation. For questions or community support, refer to the ServiceNow community forums. When implementing server-client communication, ensure `GlideAjax` is enabled and scripts are properly configured.  
Common use cases for field customization scripts.
Warning:  
The customization described here was developed for use in specific instances, and is not supported by Now Support. This method is provided as-is and should be tested thoroughly before implementation. Post all questions and comments regarding this customization to our community [forum](http://community.service-now.com/).

For more information, see [Server API reference](https://www.servicenow.com/docs/access?context=api-server&version=yokohama&pubname=yokohama-api-reference&ft:locale=en-US).

## Automatically populate a field {#r_UsefulFieldScripts__section_upr_nvx_mtb}

The following example shows how to use a client script to auto-fill a Short Description based on the selected Subcategory.

In this case, if the table has a record with Subcategory = Password
and Short Description = Password Reset. When the user selects the
Subcategory of Password on the Incident
form, a client script looks up the matching record and sets Short Description equal to Password Reset.  
Client script settings:

* Type = onChange
* Table name = incident
* Field name = Subcategory

{#r_UsefulFieldScripts__ul_ix3_hyx_mtb}

    function onChange(control, oldValue, newValue, isLoading){
        if(isLoading){return;}
        var newrec = gel('sys_row');
        //Check if new record
        if (newrec.value == -1) {
            var lookup = new GlideRecord('u_short_desc_lookup');
            lookup.addQuery('u_subcategory', g_form.getValue('subcategory'));
            lookup.query();
            var temp; //temp var - reusable
            if(lookup.next()){
                temp = lookup.u_short_description;
                if(null != temp) {
                    //Set the form value from lookup if there is a lookup value
                    g_form.setValue('short_description', temp);
                } else {
                    g_form.setValue('short_description',"");
                    }
              } else {
                  //If a lookup record does not exist based on lookup.addQuery
                  //Then set to UNDEFINED or NULL depending on type
                  g_form.setValue('short_description',"");
                  }
         }
    }

## Disable HTML tags in descriptions {#r_UsefulFieldScripts__section_o2z_kxx_mtb}

This code disables HTML tags in Description and Short Description fields by substituting the tags with non-executing versions.

    doit();
     
    function doit(){ 
     var desc = current.description.toString();
     var shdesc = current.short_description.toString();
     if(desc.indexOf('script>')>-1|| shdesc.indexOf('script>')>-1){
       desc = desc.replace(/<script>/g,"(script)");
       current.description = desc.replace(/<\/script>/g,"(\/script)");
       shdesc = shdesc.replace(/<script>/g,"(script)");
       current.short_description = shdesc.replace(/<\/script>/g,"(\/script)");}
    }

## Eliminate leading and trailing spaces in fields {#r_UsefulFieldScripts__section_kbd_gxx_mtb}

This example of the script trims trailing and leading spaces in the FirstName and LastName fields of the sys_user.

    doit();
     
    function doit(){ 
      var now_GR =new GlideRecord('sys_user');
      gr.query();
      while(gr.next()){
        if((gr.first_name.toString().length!= gr.first_name.toString().trim().length)||(gr.last_name.toString().length!= gr.last_name.toString().trim().length)){
         gr.first_name= gr.first_name.toString().trim();
         gr.last_name= gr.last_name.toString().trim();
         gr.autoSysFields(false);
         gr.update();}}
    }

## Make a field label flash {#r_UsefulFieldScripts__section_lnv_swx_mtb}

The following client script example is for the number field on incident. The label flashes for two seconds.

    g_form.flash("incident.number","#FFFACD",0);

The arguments for the flash method are as follows:

* tablename.fieldname
* RGB color or acceptable CSS color like "blue" or "tomato"
* Integer that determines how long the label flashes:
  * 2 for a 1-second flash
  * 0 for a 2-second flash
  * -2 for a 3-second flash
  * -4 for a 4-second flash
  {#r_UsefulFieldScripts__ul_xky_hdr_4x}
{#r_UsefulFieldScripts__ul_qh5_kgr_4x}  
Note:  
Do not specify this argument if you want the field label colored the specified color.

## Make a field label bold {#r_UsefulFieldScripts__section_y4k_xwx_mtb}

This client script makes the label of a particular field bold. In this case, the field is the Short Description on the Incident Table.

    function onLoad(){
      var l = g_form.getLabel('incident.short_description');
      l.style.fontWeight = 'bold';}

## Make fields read-only {#r_UsefulFieldScripts__section_bhw_4vx_mtb}

This onLoad client script makes the following fields on the Incident \[incident\] table read-only:

* Incident state
* Impact
* Urgency
* Priority
* Configuration item
* Assigned to
{#r_UsefulFieldScripts__ul_pbz_tzx_mtb}  
The script also removes the magnifying glass for the read-only Reference Fields (Configuration item and Assigned to).

    function onLoad(){
    var incidentState = g_form.getValue('incident_state');
    if( incidentState == '6'|| incidentState == '7'){
       g_form.setReadonly('incident_state',true);
       g_form.setReadonly('impact',true);
       g_form.setReadonly('urgency',true);
       g_form.setReadonly('priority',true);
       g_form.setReadonly('cmdb_ci',true);
       g_form.setReadonly('assigned_to',true);}}

## Set current date/time in field {#r_UsefulFieldScripts__section_vpr_nvx_mtb}

You can set date and time values in client scripts and script includes.

Client script
:   You can use the following two lines to set the current date and time in a date/time
    field. This approach bypasses the problem of getting the value into the proper format
    and proper time zone.

        var ajax = new GlideAjax('MyDateTimeAjax');
          ajax.addParam('sysparm_name','nowDateTime');
          ajax.getXML(function(){
            g_form.setValue('put your field name here', ajax.getAnswer());});

:   For more information on running server-side scripts with the client, refer to [GlideAjax](https://www.servicenow.com/docs/access?context=p_AJAX&version=yokohama&pubname=yokohama-api-reference&ft:locale=en-US).

System script include
:

        // Be sure the Glide AJAX enabled option is checked
         
        var MyDateTimeAjax = Class.create();
        MyDateTimeAjax.prototype = Object.extendsObject(AbstractAjaxProcessor,{
          nowDateTime:function(){
            return gs.nowDateTime();}});

## Toggle the timer field by field name {#r_UsefulFieldScripts__section_xzg_mvx_mtb}

The following client script toggles the timer field based on a particular field name.

    function toggleTimerByFieldName(fieldName){
     //Step 1: Find the timer object
     //timeObjectName: the timer objects name as it would normally be referenced
     //timeObjectHidden: the hidden input node in the field td
     //timeObjectParent: the parent td node containing the field and it's constituent nodes
     //timeObjectFields: anchor tag with onclick to stop timer
     
     var timeObjectName = fieldName;
     var timeObjectHidden = gel(timeObjectName);
     
     //Step 2: simulate click stop button
     var timeObjectParent;
     var timeObjectFields;
     
     //verify that we got the correct object
     if(timeObjectHidden.type=="hidden"){
     
        //Get Parent td node
        timeObjectParent = timeObjectHidden.parentNode;
     
        //Get input fields
        timeObjectFields = timeObjectParent.getElementsByTagName("input");
     
        //simulate click of stop button
        var timerTestString ="paused";
        var timerImg;
     
        //loop through input objects looking for the pause timer object
        for(var elIt=0; elIt < timeObjectFields.length; elIt++){
          if(timeObjectFields[elIt].id.match(timerTestString)){
            if(timeObjectFields[elIt].value=="false"){
              timeObjectFields[elIt].value="true";
              timerImg = timeObjectParent.getElementsByTagName("img")[0];
              timerImg.src="images/timer_start.gifx";}
          elseif(timeObjectFields[elIt].value=="true"){
              timeObjectFields[elIt].value="false";
              timerImg = timeObjectParent.getElementsByTagName("img")[0];
              timerImg.src="images/timer_stop.gifx";}}}}}

## Modify GlideDateTime field values {#r_UsefulFieldScripts__section_mod-gdt-fields}

<br />

* **[Approval assignment scripts](https://servicenow-prod.fluidtopics.net/3eJx~dDgaqzmcBCLE_oPuA)**   
  This is a searchable version of the useful approval and assignment scripts.

