Nützliche Feldskripts
Gängige Anwendungsfälle für Feldanpassungsskripts.
Weitere Informationen finden Sie unter Server API-Referenz.
Füllt ein Feld automatisch aus
Das folgende Beispiel zeigt, wie Sie ein Client-Skript zum automatischen Ausfüllen einer Kurzbeschreibung auf Grundlage der ausgewählten Unterkategorieverwenden.
In diesem Fall, wenn die Tabelle einen Datensatz mit Unterkategorie = Passwort und Kurzbeschreibung = Passwortzurücksetzung enthält. Wenn der Benutzer die Unterkategorie Passwort im Incident-Formular auswählt, sucht ein Client-Skript nach dem übereinstimmenden Datensatz und legt die Kurzbeschreibung auf „Passwort zurücksetzen“ fest.
- Type = onChange
- Table name = Incident
- Field name = Unterkategorie
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',"");
}
}
}HTML-Tags in Beschreibungen deaktivieren
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)");}
}Führende und nachgestellte Leerzeichen in Feldern beseitigen
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();}}
}Feldbezeichnungen zum Blinken bringen
g_form.flash("incident.number","#FFFACD",0);- tablename.fieldname
- RGB-Farbe oder zulässige CSS-Farbe wie „Blau“ oder „Tomate“
- Ganzzahl, die bestimmt, wie lange die Bezeichnung blinkt:
- 2 für ein 1-Sekunden-Blinken
- 0 für ein 2-Sekunden-Blinken
- -2 für 3-Sekunden-Blinken
- -4 für ein 4-Sekunden-Blinken
Markieren Sie eine Feldbezeichnung fett
function onLoad(){
var l = g_form.getLabel('incident.short_description');
l.style.fontWeight = 'bold';}Felder schreibschützen
- Incident-Status
- Auswirkung
- Dringlichkeit
- Priorität
- Konfigurationselement
- Zugewiesen an
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);}}Aktuelles Datum/aktuelle Uhrzeit im Feld festlegen
Sie können Datums- und Uhrzeitwerte in Clientskripts und Skripteinbindungen festlegen.
- Client-Skript
- Sie können die folgenden beiden Zeilen verwenden, um das aktuelle Datum und die aktuelle Uhrzeit in einem Datums-/Uhrzeitfeld festzulegen. Dieser Ansatz umgeht das Problem, den Wert in das richtige Format und die richtige Zeitzone zu bringen.
var ajax = new GlideAjax('MyDateTimeAjax'); ajax.addParam('sysparm_name','nowDateTime'); ajax.getXML(function(){ g_form.setValue('put your field name here', ajax.getAnswer());}); - System-Skripteinbindung
// Be sure the "Client callable" checkbox is checked var MyDateTimeAjax = Class.create(); MyDateTimeAjax.prototype = Object.extendsObject(AbstractAjaxProcessor,{ nowDateTime:function(){ return gs.nowDateTime();}});
Schalten Sie das Timer-Feld nach Feldname um
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";}}}}}GlideDateTime-Feldwert ändern
Im folgenden Beispiel wird ein serverseitiges Skript für den Zugriff auf ein GlideDateTime -Feld verwendet.
//You first need a GlideDateTime object
//this can be from instantiating a new object "var gdt = new GlideDateTime()"
//or getting the object from a GlideDateTime field
//getting the field value (for example: var gdt = current.start_date)
//only returns the string value, not the object
//to get the object use var gdt = current.start_date.getGlideObject();
//now gdt is a GlideDateTime object
var gdt = current.start_date.getGlideObject();
//All methods can use negative values to subtract intervals
//add 1 hour (60 mins * 60 secs)
gdt.addSecondsLocalTime(3600);
//add 1 day
gdt.addDaysLocalTime(1);
//subtract 1 day
gdt.addDaysLocalTime(-1);
//add 3 weeks
gdt.addWeeksLocalTime(3);
//subtract 6 months.
gdt.addMonthsLocalTime(-6);
//add 1 year, representing the date and time using the UTC timezone instead of the local user's timezone.
gdt.addYearsUTC(1);