mirror of
https://github.com/moodle/moodle.git
synced 2025-07-09 00:17:32 +02:00
MDL-8157 improved hadling of conditions in disabledIf formslib method
This commit is contained in:
@ -81,65 +81,56 @@ function unlockoption(form,item) {
|
||||
eval("form.h"+item+".value=0");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function lockoptionsall(formid) {
|
||||
var lock = new Object();
|
||||
var items = eval(formid+'items');
|
||||
var form = document.forms[formid];
|
||||
for (var master in items){
|
||||
var subitems=items[master].dependents;
|
||||
var thislock;
|
||||
if (items[master].condition=='notchecked'){
|
||||
thislock=!form.elements[master].checked;
|
||||
} else if (items[master].condition=='checked'){
|
||||
thislock=form.elements[master].checked;
|
||||
} else if (items[master].condition=='noitemselected'){
|
||||
thislock=(form.elements[master].selectedIndex==-1);
|
||||
} else if (items[master].condition=='eq'){
|
||||
thislock=(form.elements[master].value==items[master].value);
|
||||
} else {
|
||||
thislock=(form.elements[master].value!=items[master].value);
|
||||
|
||||
}
|
||||
|
||||
for (var i=0; i<subitems.length; i++) {
|
||||
if (lock[subitems[i]]!=null){
|
||||
lock[subitems[i]] = thislock || lock[subitems[i]];
|
||||
}else{
|
||||
lock[subitems[i]] = thislock;
|
||||
var form = document.forms[formid];
|
||||
var dependons = eval(formid+'items');
|
||||
for (var dependon in dependons) {
|
||||
var master = form[dependon];
|
||||
for (var condition in dependons[dependon]) {
|
||||
for (var value in dependons[dependon][condition]) {
|
||||
var lock;
|
||||
switch (condition) {
|
||||
case 'notchecked':
|
||||
lock = !master.checked; break;
|
||||
case 'checked':
|
||||
lock = master.checked; break;
|
||||
case 'noitemselected':
|
||||
lock = master.selectedIndex==-1; break;
|
||||
case 'eq':
|
||||
lock = master.value==value; break;
|
||||
default:
|
||||
lock = master.value!=value; break;
|
||||
}
|
||||
for (var ei in dependons[dependon][condition][value]) {
|
||||
var formelement = form[dependons[dependon][condition][value][ei]];
|
||||
formelement.disabled = lock;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var item in lock) {
|
||||
form.elements[item].disabled=lock[item];
|
||||
}
|
||||
}
|
||||
return(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function lockoptionsallsetup(formid) {
|
||||
var varname = formid.replace(/\-/g, '_');
|
||||
var items=eval(varname+'items');
|
||||
var form=document.forms[formid];
|
||||
for (var i = 0; i < form.elements.length; i++){
|
||||
var found=false;
|
||||
var formelement = form.elements[i];
|
||||
if (formelement.type=='reset'){
|
||||
formelement.onclick = function(){this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
|
||||
formelement.onblur = function(){this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
|
||||
formelement.onchange = function(){this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
|
||||
} else {
|
||||
for (var master in items){
|
||||
if (master==formelement.name){
|
||||
formelement.onclick = function(){return lockoptionsall(this.form.getAttribute('id'));};
|
||||
formelement.onblur = function(){return lockoptionsall(this.form.getAttribute('id'));};
|
||||
formelement.onchange = function(){return lockoptionsall(this.form.getAttribute('id'));};
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return lockoptionsall(formid);
|
||||
var form = document.forms[formid];
|
||||
var dependons = eval(formid+'items');
|
||||
for (var dependon in dependons) {
|
||||
var master = form[dependon];
|
||||
master.onclick = function() {return lockoptionsall(this.form.getAttribute('id'));};
|
||||
master.onblur = function() {return lockoptionsall(this.form.getAttribute('id'));};
|
||||
master.onchange = function() {return lockoptionsall(this.form.getAttribute('id'));};
|
||||
}
|
||||
for (var i = 0; i < form.elements.length; i++){
|
||||
var formelement = form.elements[i];
|
||||
if (formelement.type=='reset') {
|
||||
formelement.onclick = function() {this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
|
||||
formelement.onblur = function() {this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
|
||||
formelement.onchange = function() {this.form.reset();return lockoptionsall(this.form.getAttribute('id'));};
|
||||
}
|
||||
}
|
||||
return lockoptionsall(formid);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user