diff options
author | alecpl <alec@alec.pl> | 2010-08-30 07:19:35 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2010-08-30 07:19:35 +0000 |
commit | b0d46b1ab63e5f771a0dbb7400ca674194f456df (patch) | |
tree | a4da6a0c7b25d43a5ebd2dc96d5e9aedd31d4b61 | |
parent | 64233d21890da61b4052f4ffd6bc34e4a83f5bc6 (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
-rw-r--r-- | program/js/app.js | 21 |
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; } }; |