@@ -192,23 +192,39 @@ Nette.isDisabled = function(elem) {
192192} ;
193193
194194
195+ /**
196+ * CSS class.
197+ */
198+ Nette . formErrorClass = 'nette-form-error' ;
199+
200+
195201/**
196202 * Display all error messages.
197203 */
198204Nette . showFormErrors = function ( form , errors ) {
199- if ( errors . length ) {
200- Nette . addError ( errors [ 0 ] . element , errors [ 0 ] . message ) ;
205+ var boxes = form . getElementsByTagName ( 'span' ) ;
206+ for ( var i = boxes . length - 1 ; i >= 0 ; i -- ) {
207+ if ( boxes [ i ] . getAttribute ( 'class' ) === Nette . formErrorClass ) {
208+ boxes [ i ] . parentNode . removeChild ( boxes [ i ] ) ;
209+ }
201210 }
202- } ;
203211
212+ for ( var i = 0 ; i < errors . length ; i ++ ) {
213+ if ( i === 0 && errors [ i ] . element . focus ) {
214+ errors [ i ] . element . focus ( ) ;
215+ }
204216
205- /**
206- * Display error message.
207- * @deprecated
208- */
209- Nette . addError = function ( elem , message ) {
210- if ( elem . focus ) {
211- elem . focus ( ) ;
217+ if ( errors [ i ] . message ) {
218+ var box = document . createElement ( 'span' ) ;
219+ box . setAttribute ( 'class' , Nette . formErrorClass ) ;
220+ box . textContent = errors [ i ] . message ;
221+ errors [ i ] . element . parentNode . insertBefore ( box , errors [ i ] . element . nextSibling ) ;
222+ Nette . addEvent ( errors [ i ] . element , 'keypress' , function ( ) {
223+ if ( this . nextSibling && this . nextSibling . getAttribute ( 'class' ) === Nette . formErrorClass ) {
224+ this . parentNode . removeChild ( this . nextSibling ) ;
225+ }
226+ } ) ;
227+ }
212228 }
213229 if ( message ) {
214230 alert ( message ) ;
0 commit comments