mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 14:27:22 +01:00
MDL-34728 forms: woy for other JS to trigger disableIf update.
This was discovered while working on MDL-32705. If some JavaScript (for example a select all/none link) changes the state of some form fields, then the disabledIf state of other form elements does not automatically update. The existing form JS was so well encapsulated that this was impossible. This change pokes a hole in the encapsulation, and provides an API M.form.updateFormState(formid); that other bits of JS code can call when necessary.
This commit is contained in:
parent
87e9331d93
commit
bef9ab0ad5
@ -58,6 +58,11 @@ M.form.initShowAdvanced = function(Y, config) {
|
||||
return M.form.showAdvanced;
|
||||
};
|
||||
|
||||
/**
|
||||
* Stores a list of the dependencyManager for each form on the page.
|
||||
*/
|
||||
M.form.dependencyManagers = {};
|
||||
|
||||
/**
|
||||
* Initialises a manager for a forms dependencies.
|
||||
* This should happen once per form.
|
||||
@ -128,7 +133,7 @@ M.form.initFormDependencies = function(Y, formid, dependencies) {
|
||||
return this.checkDependencies(null);
|
||||
},
|
||||
/**
|
||||
* Gets all elements in the form by thier name and returns
|
||||
* Gets all elements in the form by their name and returns
|
||||
* a YUI NodeList
|
||||
* @return Y.NodeList
|
||||
*/
|
||||
@ -352,5 +357,17 @@ M.form.initFormDependencies = function(Y, formid, dependencies) {
|
||||
return dependencyManager;
|
||||
})();
|
||||
|
||||
return new M.form.dependencyManager();
|
||||
};
|
||||
M.form.dependencyManagers[formid] = new M.form.dependencyManager();
|
||||
return M.form.dependencyManagers[formid];
|
||||
};
|
||||
|
||||
/**
|
||||
* Update the state of a form. You need to call this after, for example, changing
|
||||
* the state of some of the form input elements in your own code, in order that
|
||||
* things like the disableIf state of elements can be updated.
|
||||
*/
|
||||
M.form.updateFormState = function(formid) {
|
||||
if (formid in M.form.dependencyManagers) {
|
||||
M.form.dependencyManagers[formid].checkDependencies(null);
|
||||
}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user