X-Git-Url: https://dev.renevier.net/?a=blobdiff_plain;f=public%2Fjs%2Fforms.js;h=738b056f67c6840d8dd9ec8df9c97f1baea0ccf9;hb=d9f13fbba43193040911105caf393aff945eb02d;hp=b96fe20e78af9a0d73ef13f1bd2f8ec55424ce15;hpb=190fd621df4920c56a422c03663874cddaa67d64;p=syj.git diff --git a/public/js/forms.js b/public/js/forms.js index b96fe20..738b056 100644 --- a/public/js/forms.js +++ b/public/js/forms.js @@ -1,5 +1,17 @@ /* This file is part of Syj, Copyright (c) 2010 Arnaud Renevier, and is published under the AGPL license. */ +Element.addMethods(['input', 'textarea'], { + check: function(control, callback, errorMessage) { + if (callback.call(control)) { + return true; + } + control.insert({ + after: new Element("div", {className: 'error'}).update(errorMessage) + }); + return false; + } +}); + Element.addMethods('form', { focus: function(form) { var tofocus, error; @@ -12,22 +24,28 @@ Element.addMethods('form', { tofocus = form.down('input:not([readonly],[disabled]),textarea:not([readonly][disabled])'); } if (tofocus) { + if (error && (typeof tofocus.highlight === "function")) { + tofocus.highlight('#F08080'); + } tofocus.focus(); tofocus.select(); } - } -}); + }, -Element.addMethods(['input', 'textarea'], { - check: function(control, callback, errorMessage) { - if (callback.call(control)) { - return true; - } - control.focus(); - control.select(); - control.insert({ - after: new Element("div", {className: 'error'}).update(errorMessage) + checkEmptyElements: function(form, errorMessage) { + var results = []; + form.select('.required').each(function(elt) { + var id = elt.getAttribute('for'), control = $(id); + if (!control) { + return; + } + if (!control.check(function() { + return !this.value.strip().empty(); + }, errorMessage)) { + results.push(control); + } }); - return false; + return results; } + });