6 category: JavaScript libraries
8 - "data-parsley-validate"
9 - "$('#form').parsley()"
17 [Parsley](http://parsleyjs.org/doc/) provides frontend form validation.
23 ### Installing via NPM
26 npm install --save parsleyjs
29 [parsleyjs](https://www.npmjs.com/package/parsleyjs) is the Parsley form validator. ('parsley' is a different package)
36 <form data-parsley-validate>
37 <!-- ✗ not preferred -->
43 $('#form').parsley(/* options */)
46 It's preferable to explicitly call `$.fn.parsley()`.
53 $('#myform').parsley()
54 .isValid() // → true | null
63 $('#myform input').parsley()
65 .validate() // returns errors
88 data-parsley-type='url'
95 data-parsley-maxlength='6'
97 data-parsley-minlength='10'
104 data-parsley-pattern='\d+'
109 data-parsley-type='number'
110 data-parsley-type='integer'
111 data-parsley-type='digits'
112 data-parsley-type='alphanum'
119 data-parsley=range='[6, 10]'
124 data-parsley-max='10'
132 data-parsley-mincheck='1'
133 data-parsley-maxcheck='3'
134 data-parsley-check='[1, 3]'
140 data-parsley-equalto='#confirm'
148 // Supported & excluded inputs by default
149 inputs: 'input, textarea, select'
150 excluded: 'input[type=button], input[type=submit], input[type=reset], input[type=hidden]'
154 // Stop validating field on highest priority failing constraint
155 priorityEnabled: true
158 See: [Options](http://parsleyjs.org/doc/annotated-source/defaults.html)
163 // identifier used to group together inputs
164 // (e.g. radio buttons…)
169 // identifier (or array of identifiers) used to
170 // validate only a select group of inputs
174 These options are only available for fields.
179 // Enable/disable error messages
184 // Key events threshold before validation
185 validationThreshold: 3
189 // Focused field on form validation error. ‘first’|’last’|’none’
194 // $.Event() that will trigger validation. eg: keyup, change…
199 // Class that would be added on every failing validation
201 errorClass: 'parsley-error'
202 successClass: 'parsley-success'
206 // Return the $element that will receive these above
207 // success or error classes. Could also be (and given
208 // directly from DOM) a valid selector like '#div'
209 classHandler: function (ParsleyField) {}
213 // Return the $element where errors will be appended.
214 // Could also be (and given directly from DOM) a valid
215 // selector like '#div'
216 errorsContainer: function (ParsleyField) {}
220 // ul elem that would receive errors’ list
221 errorsWrapper: '<ul class="parsley-errors-list"></ul>'
225 // li elem that would receive error message
226 errorTemplate: '<li></li>'
234 $('[data-parsley]').parsley({
235 errorsContainer (field) {
236 return field.$element.closest('.block, .control')
241 Appends the error to the closest `.block` or `.control`.
246 $('[data-parsley]').parsley({
247 errorClass: '-error',
248 successClass: '-success',
250 errorsWrapper: '<ul class="parsley-error-list"></ul>',
251 errorTemplate: '<li class="parsley-error"></li>'
260 $('[data-parsley]').parsley({
261 classHandler (field) {
262 const $parent = field.$element.closest('.input-group')
263 if ($parent.length) return $parent
265 return field.$element
270 Applies the `errorClass` and `successClass` to the closest `.input-group`, if available.
277 <input type='text' data-parsley-multiple-of='3' />
284 .addValidator('multipleOf', {
285 // string | number | integer | date | regexp | boolean
286 requirementType: 'integer',
288 // validateString | validateDate | validateMultiple
289 validateNumber (value, requirement) {
290 return 0 === value % requirement
294 en: 'This value should be a multiple of %s'
299 See: [Custom validators](http://parsleyjs.org/doc/index.html#custom)
303 - [Parsley documentation](http://parsleyjs.org/doc/) _(parsleyjs.org)_