summaryrefslogtreecommitdiff
path: root/program/js
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2010-08-30 07:19:35 +0000
committeralecpl <alec@alec.pl>2010-08-30 07:19:35 +0000
commitb0d46b1ab63e5f771a0dbb7400ca674194f456df (patch)
treea4da6a0c7b25d43a5ebd2dc96d5e9aedd31d4b61 /program/js
parent64233d21890da61b4052f4ffd6bc34e4a83f5bc6 (diff)
- lock_form(): fix hidden fields were disabled because of wrong type check
- lock_form(): fix initially disabled fields shouldn't be enabled on unlock
Diffstat (limited to 'program/js')
-rw-r--r--program/js/app.js21
1 files changed, 15 insertions, 6 deletions
diff --git a/program/js/app.js b/program/js/app.js
index 97c5791f7..5385c4936 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -5145,19 +5145,28 @@ function rcube_webmail()
}
};
- // set all fields of a form disabled
+ // disable/enable all fields of a form
this.lock_form = function(form, lock)
{
if (!form || !form.elements)
return;
- var type;
- for (var n=0, len=form.elements.length; n<len; n++) {
- type = form.elements[n];
- if (type == 'hidden')
+ var n, len, elm;
+
+ if (lock)
+ this.disabled_form_elements = [];
+
+ for (n=0, len=form.elements.length; n<len; n++) {
+ elm = form.elements[n];
+
+ if (elm.type == 'hidden')
continue;
- form.elements[n].disabled = lock;
+ // remember which elem was disabled before lock
+ if (lock && elm.disabled)
+ this.disabled_form_elements.push(elm);
+ else if (lock || $.inArray(elm, this.disabled_form_elements)<0)
+ elm.disabled = lock;
}
};