|
- Client Side Scripts
- ===================
-
- Introduction
- ------------
-
- Client side scripts are written in javascript and they are used to execute function on event triggers.
- These scripts can be used to:
-
- * Manipulate views
- * Do server calls (AJAX)
- * Validate entries
- * Do calculations
-
- Client scripts can be written inside of DocType in the "Client Script" tab
-
- cur_frm Object
- --------------
-
- All client script functions are attached to the cur_frm.cscript object. This object holds the functions
- relating to a DocType (form)
-
- onload event
- ------------
-
- 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')
- }
- }
-
- refersh event
- -------------
-
- 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.
-
- Server Calls
- ------------
-
- 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);
-
- Field Level Triggers
- --------------------
-
- 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
- }
-
- Fetch Pattern
- -------------
-
- 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')
|