Skip to content

Commit 3f1c6e0

Browse files
committed
netteForms: alert() replaced with span.nette-form-error
1 parent aa17b86 commit 3f1c6e0

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

src/assets/netteForms.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,12 +212,39 @@ Nette.isDisabled = function(elem) {
212212
};
213213

214214

215+
/**
216+
* CSS class.
217+
*/
218+
Nette.formErrorClass = 'nette-form-error';
219+
220+
215221
/**
216222
* Display all error messages.
217223
*/
218224
Nette.showFormErrors = function(form, errors) {
219-
if (errors.length) {
220-
Nette.addError(errors[0].element, errors[0].message);
225+
var boxes = form.getElementsByTagName('span');
226+
for (var i = boxes.length - 1; i >= 0; i--) {
227+
if (boxes[i].getAttribute('class') === Nette.formErrorClass) {
228+
boxes[i].parentNode.removeChild(boxes[i]);
229+
}
230+
}
231+
232+
for (var i = 0; i < errors.length; i++) {
233+
if (i === 0 && errors[i].element.focus) {
234+
errors[i].element.focus();
235+
}
236+
237+
if (errors[i].message) {
238+
var box = document.createElement('span');
239+
box.setAttribute('class', Nette.formErrorClass);
240+
box.textContent = errors[i].message;
241+
errors[i].element.parentNode.insertBefore(box, errors[i].element.nextSibling);
242+
Nette.addEvent(errors[i].element, 'keypress', function() {
243+
if (this.nextSibling && this.nextSibling.getAttribute('class') === Nette.formErrorClass) {
244+
this.parentNode.removeChild(this.nextSibling);
245+
}
246+
});
247+
}
221248
}
222249
};
223250

0 commit comments

Comments
 (0)