Client side scripts are written in javascript and they are used to execute function on event triggers. These scripts can be used to:
Client scripts can be written inside of DocType in the “Client Script” tab
All client script functions are attached to the cur_frm.cscript object. This object holds the functions relating to a DocType (form)
onload is called when the a record is loaded for the first time. Example:
cur_frm.cscript.onload = function(doc, doctype, docname) {
if(!doc.from) {
doc.from_user = user;
refresh_field('user')
}
}
refresh event is similar to the onload event. Except that it is also called each time the page is refreshed either via a user refresh, save or otherwise.
A typical use is to get/set data at server side. To do this, the framework has built-in AJAX interface using the $c_obj (call server object) function. The typical pattern is as follows:
// function will be called when the server responds
var callback = function(response, responseInText) {
// set the new value
// re-assign the doc record because you are inside the callback
var doc = locals[doc.doctype][doc.docname]
doc.new_value = response.message
refresh_field('new_value');
}
// call this object on the server
$c_obj([doc], 'get_my_value', doc.based_on, callback);
You can set functions to be called when values are changed in the form, at the “onchange” event.
To set a trigger, in the Field table, set the value of the Trigger column to “Client”.
Declare a function to be called by its fieldname:
// attach a trigger on the "my_value" field
cur_frm.cscript.my_value = function(doc, doctype, docname) {
msgrint("My value has been changed")
// do something
}
Another typical pattern is to get values based on other values, like when you select a Customer, its type and contact info should come automatically, to do this, you can use the standard fetch pattern on link fields:
// add_fetch(link, source_field_name, target_field_name)
add_fetch(‘customer’, ‘contact_details’, ‘contact_details’)