Client scripts
Summarize
Summary of Client scripts
Client scripts in ServiceNow allow you to run JavaScript within the user's web browser to respond to client-side events such as form loading, field value changes, and form submissions. They are designed to enhance and customize the user experience on forms by controlling field behaviors and form interactions dynamically.
Show less
Key use cases include making fields visible or hidden, read-only or writable, optional or mandatory based on user roles, setting field values based on other fields, modifying choice lists, and displaying messages.
Important: Client scripts improve user experience but do not secure data access. Use Access Control Lists (ACLs) or data policies to protect sensitive information.
Where Client Scripts Run and Limitations
- Client scripts (except onCellEdit scripts) apply only to forms and search pages, not list views.
- To control field values on lists, use ACLs, business rules, data policies, onCellEdit client scripts, or disable list editing.
- Client scripts are not supported in ServiceNow mobile applications.
Client Script Configuration Fields
- Name: Identifies the client script.
- Table: Specifies the table the script applies to.
- UI Type: Defines the target interface - Desktop only, Mobile/Service Portal, or All.
- Type: Determines when the script runs:
- onLoad(): Executes when the form first loads, used to manipulate form fields or set defaults.
- onSubmit(): Executes on form submission to validate data; can cancel submission by returning false.
- onChange(): Executes when a specific field value changes; requires parameters like control, oldValue, newValue.
- onCellEdit(): Runs when a list cell is edited; parameters include sysIDs, table, oldValues, newValue, and callback to manage script execution flow.
- Field Name: Used for onChange and onCellEdit scripts to specify the affected field.
- Application: The application scope where the script resides.
- Active: Enables or disables the client script.
- Inherited: Indicates if the script applies to extended tables.
- Global and View: Controls script scope across table views.
- Description: Explains the script’s purpose.
- Messages: Defines localized text strings accessible via getMessage() for use in the script.
- Script: Contains the actual JavaScript code.
- Isolate script: When enabled, runs the script in strict mode disabling direct DOM access and certain JavaScript libraries by default. Can be disabled per script or globally via system property.
Practical Considerations for ServiceNow Customers
- Use client scripts primarily to improve form responsiveness and user interaction.
- Do not rely on client scripts for security; enforce data protection with ACLs and data policies.
- Choose the correct client script type based on the event timing and interaction needed (load, change, submit, cell edit).
- Configure UI Type carefully to target the appropriate interface, especially if using Service Portal or mobile apps.
- Use the Isolate script option to control script execution environment and compatibility.
- For list editing validation, prefer onCellEdit scripts or server-side controls over client scripts.
Client scripts allow the system to run JavaScript on the client (web browser) when client-based events occur, such as when a form loads, after form submission, or when a field changes value.
Use client scripts to configure forms, form fields, and field values while the user is using the form. Client scripts can:
- make fields hidden or visible
- make fields read only or writable
- make fields optional or mandatory based on the user's role
- set the value in one field based on the value in other fields
- modify the options in a choice list based on a user's role
- display messages based on a value in a field
Client scripts are intended to optimize the user experience on a form. Client scripts are not meant to protect unwanted access to data.
To prevent unwanted access to data, ensure that sensitive fields are hidden or read-only through ACLs or data policies.
For more information, see Access Control List Rules or Data policy.
Where client scripts run
- Create an access control to restrict who can edit field values.
- Create a business rule to validate content.
- Create a data policy to validate content.
- Create an onCellEdit() client script to validate content.
- Disable list editing for the table.
Client script form
| Field | Description |
|---|---|
| Name | Name of the client script. |
| Table | Table to which the client script applies. |
| UI Type | Target user interface to which the client script applies.
|
| Type | onLoad() — runs when the system first renders the form and before users can enter data. Typically, onLoad() client scripts perform client-side-manipulation of the current form or set default record values. onSubmit() — runs when a form is submitted. Typically, onSubmit() scripts validate things on the form and ensure that the submission makes sense. An onSubmit() client script can cancel form submission by returning a value of false. onChange() — runs when a particular field value changes on the form.
The onChange() client script must specify these parameters.
onCellEdit() — runs when the list editor changes a cell value. The
onCellEdit() client script must specify these parameters.
|
| Field Name | Name of the field to which the script applies. Available only if the script responds to a field value change (onChange or onCellEdit script types). |
| Application | Application where this client script resides. |
| Active | Enables the client script when selected. Unselect this field to disable the client script. |
| Inherited | Indicates whether the client script applies to extended tables. |
| Global | If true, the client script runs on all views of the table. |
| View | Only visible when Global is unselected. Views on which the client script will run. |
| Description | Content describing the functionality and purpose of the client script. |
| Messages | Text string (one per line) available to the client script as localized messages using getmessage('[message]'). For additional information, see Translate a client script message. |
| Script | Contains the client script. |
| Isolate script | New client scripts are run in strict mode, in which direct DOM access is turned off. Access to jQuery, prototype, and the window object are also turned off by default. To enable DOM access on a per-script basis, leave the Isolate script option cleared. To turn off strict mode for all new globally scoped client scripts, set the glide.script.block.client.globals system property to false. |