# Parsley 2.x changelog

Parsley follows [semver](https://semver.org/). This lists new features only. For bug fixes and small changes, check the commit list.

## 2.9

- Added `euvatin` (European Union Value Added Tax Identification Number) validator.

## 2.8

- Added `refresh` method. Parsley automatically refreshes before validating, but `refresh` is there if one needs to insure that some fields are rebound/unbound, or triggers are updated, etc...

- `Parsley.hasValidator` makes it easy to check if a validator exists or not [#1216]

- `classHandler` now supports global functions, `errorWrapper` too. [#1101]

## 2.7

- Support for Date type (#1158)

## 2.6.1

- Avoid min/max/range validators for date type, until this is actually supported (#1158)

## 2.6.0

- While input with `type="number"` must have a default step of 1, the default for
  `data-parsley-type="number"` has been changed to `'any'` as an hopeless attempt
  to minimize the confusion around this validator. (#1129)

## 2.5.1

- An input with class 'required' will no longer be required; only having an attribute `'required'`
  or `'data-parsley-required'` makes an input being required (#1138)

## 2.5.0

- New option `debounce` to minimize validation (#1103)

## 2.4.2

- `$('...').parsley({someOption: 'value'})` will always set the option `someOptions`. Previously if the field/form was already initialized, options were ignored.

## 2.3.1

- Parsley now relies on `input` events instead of `change` and `keyup` events
  to revalidate after the first failure. This is now customizable with the
  `triggerAfterFailure` option. Triggers specified with the `trigger` option
  are unbound once a field has failed.
- Parsley updates the UI before firing success/error/validated events
- Deprecated uses of ParsleyUI. Methods are now instance methods of ParsleyField,
  with modernized interfaces.

## 2.2.0

- type="number" now follows HTML5 spec. In particular, commas are no longer accepted. (#1037)
- Calls to validate, isValid, whenValidate, whenValid use named arguments
  (e.g. validate({force: true, group: 'foo'})). Previous API is supported for
  isValid/validate but is deprecated.
- Drop support for undocumented option `eventValidate`.

## 2.2.0-rc3

- Merged both versions (remote and basic) of Parsley.
  There is now a single version that is remote & promise aware.
- Converted src/ and test/ to ECMAScript 6.
  Requires es5-shim if you need compatibility with IE8.

## 2.2.0-rc2

- A custom validator may specify an error message by simply passing it as first argument
  when rejecting the promise. (#560)
- Submit buttons: data now included in the submitted form (#826) and
  attribute 'formnovalidate' is supported (#972)
- Remote: use HTTP status code for what is considered valid or not (#956)
- Remote: allow RESTful urls where "{value}" is replaced by the value to validate
- Remote: add field:ajaxoptions to allow customizing of the ajax parameters (#894)
- pattern validator is now anchored, unless it looks like /pattern/flag (#861)
- Parsley won't try to correct names with caps (#990)

## 2.2.0-rc1

- Major validators refactor:
  - Compatible with promises from the ground up. Previous API (e.g. `isValid`)
    remains, but promise-aware API is now recommended (e.g. `whenValid`).
  - New API to define custom validators (old API is still there but deprecated).
  - Shorter code, removed dependency on `validators` lib.
  - The `remote` validator is much smaller now, will probably be merged in the future.

- Deprecated `data-parsley-trim-value` in favour of new `whitespace` API
- Added `whitespace` API with two options: `trim` and `squish`

## 2.1.2

- fix custom triggers after a `reset()` (#926)
- fix documentation and generated dist files

## 2.1.1

- Bug fix for reentrant validations

## 2.1.0

- Event remodel
  - New API `on` and `off` to register for events
  - Global listeners added with `Parsley.on`
  - Using the new API, event names no longer have their ".parsley" ending
  - Compatibility with previous API is maintained, but `$.emit`, `$.listen`,
    etc. are now deprecated  (#899)

- New features
  - New event 'form:submit' fired before a form is submitted.
  - The `value` option can now be a function
  - Parsley.version is now the best way to get the current version
  - Additional translations

- Changes
  - Error containers are created only the first time they are needed.
  - [BC Break] `isValid()` field method now returns just a boolean, `[]` is no
  more returned when field is optional and empty. `needsValidation()` appears
  now to indicate if a valid field needed a validation.

- Bug fixes
  - Speed optimization (#855)
  - Eemote cache now cleared after form submission (#813)
  - Event 'field:reset' now fired if a field is no longer validated (because it
    is excluded, or removed) (#841)
  - Support for validators with compound names by restoring full case
    sensitivity to error messages. (#805)
  - Fix conflict between different forms on the same page (#888)
  - Handles checkbox names containing spaces (#881)
  - Detects name conflicts between validators and regular options
  - Compatible with jQuery.noConflict() (#859)

## 2.0.7

- support of html5 `maxlength` and `minlength` (#731)
- various doc updates
- improved test suite
- various small code simplifications
- updated TLD range for URL validator (#829)

## 2.0.6

- removed buggy special char in remote.js plugin (#755)
- fixed bug where isValid returned old errors on field with no constraints
  anymore (#776)
- fix a lot of tests

## 2.0.5

  - fixed AMD

## 2.0.4

  - added ParsleyField context to asyncValidator callback functions (#702)
  - fixed AMD loading of Validator.js (#691, #693)
  - added extra/words.js validators (#700)
  - added support of multiple groups (#706)

## 2.0.3

  - fix not AMD loading for Wordpress case (#685)

## 2.0.2

  - proper version number in `dist/` files

## 2.0.1

  - fixed "attr.specified is deprecated." console warning (#608)
  - fixed package.json config with main dep (#617)
  - fixed `addValidator()` method
  - added support for `requirementsTransformer` for custom validators
  - updated jQuery needed version from README and doc
  - fixed case when a multiple item were dynamically removed from DOM (#634)
  - added proper `type="range"` support (#668)

## 2.0.0

  - fixed remote re-entering already validated value (#576)
  - added `stopImmediatePropagation()` un `onSubmit()` method to avoid conflicts
    with other libraries (#561)
  - fixed parsleyFieldMultiple behavior that tried to bind non radio or checkbox
    fields as a multiple field (#589)
  - `input[type=hidden]` are now excluded by default (#589)
  - fixed constraints unicity on fields belonging to same multiple group
  - added `data-parsley-remote-validator` feature (#587)
  - now support custom messages placeholders (#602)
  - fix exception when ParsleyField or ParsleyFieldMultiple value is null or
    undefined (#598)
  - fixed `destroy()` method + added test (#555)
  - 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

  - totally reworked multiple fields (#542):
    - created a new Class: `ParsleyFieldMultiple`
    - multiple fields returns now same `ParsleyFieldMultiple` instance
  - `dist/parsley+remote.js` and `dist/parsley+remote.min.js` have been renamed
    to `dist/parsley.remote.js` and `dist/parsley.remote.min.js`
  - changed the way `asyncValidate` handle events
  - fix warning if parsley called on a page without elements to validate (#562)
  - fixed `ParsleyUtils.attr()` attribute checking (#564)
  - updated `ParsleyUtils.get()` method. Do not support anymore placeholder
    feature since `ParsleyUtils.get() || placeholder` writing is more readable
  - select and select multiple elements both handle the `parsley-success` and
    `parsley-error` classes directly and not their parent.
  - added pattern flags support (#566, #550)
  - fixed ParsleyFieldMultiple optional fields if not explicitely required
  - fixed ParsleyFieldMultiple trigger
  - fixed select UI auto-bind change on error (#537)
  - fixed `asyncIsValid()` and `asyncValidate()` API to support `force` option

## 2.0.0-rc4

  - fixed js error if wrong data-parsley-errors-container is given
  - fixed js error if `name=""` or `id=""` for parlsey multiple fields (#533)
  - fixed dynamically added fields form inheritance (#532)
  - fixed parsley-remote.js remote validator registration that overrided
    other extra validators.
  - added multiple xhr queries aborting in parsley.remote to avoid unneeded
    server overload with keyup trigger
  - fixed excluded fields option and added some doc for it (#546)
  - fixed `range` validator with `0` value (#543)
  - added `data-parsley-trim-value` option
  - updated validator.js
  - added `this.submitEvent.preventDefault()` support for parsley.remote
    call twice form / field tests with parsley.remote for better support (#552)
  - fixed global leaks shown by test suite
  - new $ Parsley API behavior:
    - returns `undefined` if called on non existing DOM element
      + console warn (#548)
    - returns an array of instances if called on selector with multiple
      elements (#547)
  - fixed `min`, `max`, `range` validators (#556)

## 2.0.0-rc3

  - fixed $ conflict (#525)
  - added `force` validation for `isValid()` and `validate()`
  - added doc events example
  - added doc Help section
  - added `data-parsley-errors-messages-disabled` option

## 2.0.0-rc2

  - added `data-parsley-validate-if-empty` field option (#489)
  - fixed select multiple bug (#522)
  - allowed checkbox, radio and select multiple inputs to have either a `name`
    or an `id` to be binded (instead of just a name)

## 2.0.0-rc1

  - initial 2.x public release
