MDL-8157 improved hadling of conditions in disabledIf formslib method

This commit is contained in:
skodak
2007-01-12 09:38:02 +00:00
parent c517d8f07e
commit dd07bbac59
2 changed files with 81 additions and 74 deletions

View File

@ -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);
}