Skip to content

Commit

Permalink
- added ParsleyUI.getErrorsMessages() (Closes #607)
Browse files Browse the repository at this point in the history
  • Loading branch information
guillaumepotier committed Apr 17, 2014
1 parent 740ed31 commit 95163c0
Show file tree
Hide file tree
Showing 9 changed files with 72 additions and 20 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
- added requirejs AMD support for `dist/parsley.js` and `dist/parsley.min.js`
versions (#606)
- fixed custom namespace -multiple that didn't re-evaluated correctly (#595)
- added `ParsleyUI.getErrorsMessages()` (Closes #607)

## 2.0.0-rc5

Expand Down
12 changes: 11 additions & 1 deletion dist/parsley.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*!
* Parsleyjs
* Guillaume Potier - <guillaume@wisembly.com>
* Version 2.0.0-rc5 - built Thu Apr 17 2014 18:53:10
* Version 2.0.0-rc5 - built Thu Apr 17 2014 19:33:56
* MIT Licensed
*
*/
Expand Down Expand Up @@ -1137,6 +1137,16 @@
if ((diff.kept.length || diff.added.length) && 'undefined' === typeof fieldInstance._ui.failedOnce)
this.manageFailingFieldTrigger(fieldInstance);
},
// Returns an array of field's error message(s)
getErrorsMessages: function (fieldInstance) {
// No error message, field is valid
if (true === fieldInstance.validationResult)
return [];
var messages = [];
for (var i = 0; i < fieldInstance.validationResult.length; i++)
messages.push(this._getErrorMessage(fieldInstance, fieldInstance.validationResult[i].assert));
return messages;
},
manageStatusClass: function (fieldInstance) {
if (true === fieldInstance.validationResult)
this._successClass(fieldInstance);
Expand Down
6 changes: 3 additions & 3 deletions dist/parsley.min.js

Large diffs are not rendered by default.

12 changes: 11 additions & 1 deletion dist/parsley.remote.js
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ window.ParsleyConfig.validators.remote = {
/*!
* Parsleyjs
* Guillaume Potier - <guillaume@wisembly.com>
* Version 2.0.0-rc5 - built Thu Apr 17 2014 18:53:10
* Version 2.0.0-rc5 - built Thu Apr 17 2014 19:33:56
* MIT Licensed
*
*/
Expand Down Expand Up @@ -1391,6 +1391,16 @@ window.ParsleyConfig.validators.remote = {
if ((diff.kept.length || diff.added.length) && 'undefined' === typeof fieldInstance._ui.failedOnce)
this.manageFailingFieldTrigger(fieldInstance);
},
// Returns an array of field's error message(s)
getErrorsMessages: function (fieldInstance) {
// No error message, field is valid
if (true === fieldInstance.validationResult)
return [];
var messages = [];
for (var i = 0; i < fieldInstance.validationResult.length; i++)
messages.push(this._getErrorMessage(fieldInstance, fieldInstance.validationResult[i].assert));
return messages;
},
manageStatusClass: function (fieldInstance) {
if (true === fieldInstance.validationResult)
this._successClass(fieldInstance);
Expand Down
6 changes: 3 additions & 3 deletions dist/parsley.remote.min.js

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions doc/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -867,6 +867,10 @@ <h3 id="ui-for-javascript">UI for javascript</h3>
<td><code>window.ParsleyUI.removeError(parsleyInstance, name);</code></td>
<td>Manually remove an error message.</td>
</tr>
<td>Get errors messages <version>#2.0</version></td>
<td><code>window.ParsleyUI.getErrorsMessages(parsleyInstance);</code></td>
<td>Returns an array of the field errors messages displayed once validated.</td>
</tr>
</tbody>
</table>
<!-- ****************** Events ****************** -->
Expand Down
14 changes: 14 additions & 0 deletions src/parsley/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,20 @@ define('parsley/ui', [
this.manageFailingFieldTrigger(fieldInstance);
},

// Returns an array of field's error message(s)
getErrorsMessages: function (fieldInstance) {
// No error message, field is valid
if (true === fieldInstance.validationResult)
return [];

var messages = [];

for (var i = 0; i < fieldInstance.validationResult.length; i++)
messages.push(this._getErrorMessage(fieldInstance, fieldInstance.validationResult[i].assert));

return messages;
},

manageStatusClass: function (fieldInstance) {
if (true === fieldInstance.validationResult)
this._successClass(fieldInstance);
Expand Down
25 changes: 13 additions & 12 deletions test/dev.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
<input type="submit">
</form> -->

<!-- <form id="parsley" data-parsley-validate>
<form id="parsley" data-parsley-validate>
<select name="plan" id="plan" class="form-control first" required="">
<option selected="selected" value="">Please select</option>
<option value="1200">1200 Calories</option>
Expand All @@ -64,9 +64,9 @@
</select>
<input type="submit" />
<input type="reset" onclick="javascript:$('#parsley').parsley().destroy();" />
</form> -->
</form>

<form id="doesntwork">
<!-- <form id="doesntwork">
<h2>doesnt work</h2>
<div>
<label>
Expand All @@ -77,21 +77,22 @@ <h2>doesnt work</h2>
<div>
<button type="submit">go</button>
</div>
</form>
</form> -->

<script src="../bower_components/jquery/jquery.js"></script>
<!-- <script src="../bower_components/jquery/jquery.js"></script> -->
<!-- <script src="../src/parsley.remote.js"></script> -->
<!-- <script src="../src/extra/dateiso.js"></script> -->
<!-- <script src="../src/i18n/fr.extra.js"></script> -->
<script src="../dist/parsley.js"></script>
<!-- <script src="../bower_components/requirejs/require.js" data-main="../src/main"></script></body> -->
<!-- <script src="../src/i18n/fr.js"></script> -->
<!-- <script src="../dist/parsley.js"></script> -->
<script src="../bower_components/requirejs/require.js" data-main="../src/main"></script></body>
<!-- <script src="../src/i18n/it.js"></script> -->

<script type="text/javascript">
$(document).ready(function () {
$('#doesntwork').parsley({
namespace: 'data-validate-'
});
});
// $(document).ready(function () {
// $('#doesntwork').parsley({
// namespace: 'data-validate-'
// });
// });
</script>
</html>
12 changes: 12 additions & 0 deletions test/features/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,18 @@ define(function () {
expect($('#element').hasClass('parsley-error')).to.be(false);
expect($('ul#parsley-id-' + parsleyField.__id__ + ' li').length).to.be(0);
});
it('should have a getErrorsMessage() method', function () {
$('body').append('<input type="email" id="element" value="foo" data-parsley-minlength="5" />');
var parsleyInstance = $('#element').parsley();
parsleyInstance.validate();
expect(window.ParsleyUI.getErrorsMessages(parsleyInstance).length).to.be(1);
expect(window.ParsleyUI.getErrorsMessages(parsleyInstance)[0]).to.be('This value should be a valid email.');

$('#element').attr('data-parsley-priority-enabled', false);
parsleyInstance.validate();
expect(window.ParsleyUI.getErrorsMessages(parsleyInstance).length).to.be(2);
expect(window.ParsleyUI.getErrorsMessages(parsleyInstance)[0]).to.be('This value is too short. It should have 5 characters or more.');
});
afterEach(function () {
if ($('#element').length)
$('#element').remove();
Expand Down

0 comments on commit 95163c0

Please sign in to comment.