Skip to content

Commit d8e9d58

Browse files
committed
netteForms: alert() replaced with span.nette-form-error
1 parent 312ca1b commit d8e9d58

1 file changed

Lines changed: 24 additions & 17 deletions

File tree

src/assets/netteForms.js

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -267,30 +267,37 @@ Nette.addError = function(elem, message) {
267267

268268

269269
/**
270-
* Display error messages.
270+
* CSS class.
271271
*/
272-
Nette.showFormErrors = function(form, errors) {
273-
var messages = [],
274-
focusElem;
275-
276-
for (var i in errors) {
277-
var elem = errors[i].element,
278-
message = errors[i].message;
272+
Nette.formErrorClass = 'nette-form-error';
279273

280-
if (messages.indexOf(message) < 0) {
281-
messages.push(message);
282274

283-
if (!focusElem && elem.focus) {
284-
focusElem = elem;
285-
}
275+
/**
276+
* Display error messages.
277+
*/
278+
Nette.showFormErrors = function(form, errors) {
279+
var boxes = form.getElementsByTagName('span');
280+
for (var i = boxes.length - 1; i >= 0; i--) {
281+
if (boxes[i].getAttribute('class') === Nette.formErrorClass) {
282+
boxes[i].parentNode.removeChild(boxes[i]);
286283
}
287284
}
288285

289-
if (messages.length) {
290-
alert(messages.join('\n'));
286+
for (var i = 0; i < errors.length; i++) {
287+
if (i === 0 && errors[i].element.focus) {
288+
errors[i].element.focus();
289+
}
291290

292-
if (focusElem) {
293-
focusElem.focus();
291+
if (errors[i].message) {
292+
var box = document.createElement('span');
293+
box.setAttribute('class', Nette.formErrorClass);
294+
box.textContent = errors[i].message;
295+
errors[i].element.parentNode.insertBefore(box, errors[i].element.nextSibling);
296+
Nette.addEvent(errors[i].element, 'keypress', function() {
297+
if (this.nextSibling && this.nextSibling.getAttribute('class') === Nette.formErrorClass) {
298+
this.parentNode.removeChild(this.nextSibling);
299+
}
300+
});
294301
}
295302
}
296303
};

0 commit comments

Comments
 (0)