Skip to content

Commit 77730fa

Browse files
committed
netteForms: alert() replaced with span.nette-form-error
1 parent ce97116 commit 77730fa

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
@@ -230,12 +230,39 @@ Nette.isDisabled = function(elem) {
230230
};
231231

232232

233+
/**
234+
* CSS class.
235+
*/
236+
Nette.formErrorClass = 'nette-form-error';
237+
238+
233239
/**
234240
* Display all error messages.
235241
*/
236242
Nette.showFormErrors = function(form, errors) {
237-
if (errors.length) {
238-
Nette.addError(errors[0].element, errors[0].message);
243+
var boxes = form.getElementsByTagName('span');
244+
for (var i = boxes.length - 1; i >= 0; i--) {
245+
if (boxes[i].getAttribute('class') === Nette.formErrorClass) {
246+
boxes[i].parentNode.removeChild(boxes[i]);
247+
}
248+
}
249+
250+
for (var i = 0; i < errors.length; i++) {
251+
if (i === 0 && errors[i].element.focus) {
252+
errors[i].element.focus();
253+
}
254+
255+
if (errors[i].message) {
256+
var box = document.createElement('span');
257+
box.setAttribute('class', Nette.formErrorClass);
258+
box.textContent = errors[i].message;
259+
errors[i].element.parentNode.insertBefore(box, errors[i].element.nextSibling);
260+
Nette.addEvent(errors[i].element, 'keypress', function() {
261+
if (this.nextSibling && this.nextSibling.getAttribute('class') === Nette.formErrorClass) {
262+
this.parentNode.removeChild(this.nextSibling);
263+
}
264+
});
265+
}
239266
}
240267
};
241268

0 commit comments

Comments
 (0)