Skip to content

Commit ec29bc3

Browse files
committed
netteForms: errors are showed at once using Nette.showFormErrors() instead of Nette.addError()
1 parent 5c40b5a commit ec29bc3

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

src/assets/netteForms.js

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ Nette.validateControl = function(elem, rules, onlyCheck) {
127127
var message = rule.msg.replace(/%(value|\d+)/g, function(foo, m) {
128128
return Nette.getValue(m === 'value' ? el : elem.form.elements[arr[m].control]);
129129
});
130-
Nette.addError(el, message);
130+
Nette.formErrors.push({element: el, message: message});
131131
}
132132
return false;
133133
}
@@ -141,11 +141,14 @@ Nette.validateControl = function(elem, rules, onlyCheck) {
141141
*/
142142
Nette.validateForm = function(sender) {
143143
var form = sender.form || sender, scope = false;
144-
if (form['nette-submittedBy'] && form['nette-submittedBy'].getAttribute('formnovalidate') !== null) {
144+
Nette.formErrors = [];
145+
146+
if (form['nette-submittedBy'] && form['nette-submittedBy'].getAttribute('formnovalidate')) {
145147
var scopeArr = Nette.parseJSON(form['nette-submittedBy'].getAttribute('data-nette-validation-scope'));
146148
if (scopeArr.length) {
147149
scope = new RegExp('^(' + scopeArr.join('-|') + '-)');
148150
} else {
151+
Nette.showFormErrors(form, Nette.formErrors);
149152
return true;
150153
}
151154
}
@@ -162,15 +165,13 @@ Nette.validateForm = function(sender) {
162165
radios[elem.name] = true;
163166
}
164167

165-
if ((scope && !elem.name.replace(/]\[|\[|]|$/g, '-').match(scope)) || Nette.isDisabled(elem)) {
166-
continue;
167-
}
168-
169-
if (!Nette.validateControl(elem)) {
170-
return false;
168+
if ((!scope || elem.name.replace(/]\[|\[|]|$/g, '-').match(scope)) && !Nette.isDisabled(elem)) {
169+
Nette.validateControl(elem);
171170
}
172171
}
173-
return true;
172+
173+
Nette.showFormErrors(form, Nette.formErrors);
174+
return Nette.formErrors.length === 0;
174175
};
175176

176177

@@ -191,8 +192,19 @@ Nette.isDisabled = function(elem) {
191192
};
192193

193194

195+
/**
196+
* Display all error messages.
197+
*/
198+
Nette.showFormErrors = function(form, errors) {
199+
if (errors.length) {
200+
Nette.addError(errors[0].element, errors[0].message);
201+
}
202+
};
203+
204+
194205
/**
195206
* Display error message.
207+
* @deprecated
196208
*/
197209
Nette.addError = function(elem, message) {
198210
if (elem.focus) {

0 commit comments

Comments
 (0)