New features
- #218, #531: Add meid validator, thanks to @troymccabe
- #267, #532: Add imo validator, thanks to @troymccabe
- #510, #536: The phone validator now supports French, Spanish phone number, thanks to @dlucazeau and @vadail
- #519: Add validator for South African VAT numbers, thanks to @evilchili
Improvements
- #502: Allowing sites without TLD to pass URI validation, thanks to @troymccabe
- #549, #600: Change the CSS/JS path in
demo/remote.html
anddemo/message.html
, thanks to @leegtang, @Arkni - #604: Fix the
demo/date.html
anddemo/tab.html
examples, thanks to @Arkni - #609: Add content-type header for
demo/remote.php
, thanks to @etorres
Bug Fixes
- #550, #551: Cannot validate against both ipv4 and ipv6 at the same time, thanks to @beeglebug
Language Packages
- #400: Italian language package, thanks to @maramazza
- #503: French language package, thanks to @dlucazeau
- #505: Czech language package, thanks to @AdwinTrave
- #507: Polish language package, thanks to @grzesiek. #624: Typos fixed by @lukaszbanasiak
- #517: Belgium (Dutch) language package, thanks to @dokterpasta
- #527: Bulgarian language package, thanks to @mraiur
- #534: Turkish language package, thanks to @CeRBeR666
- #536: Spanish language package, thanks to @vadail
- #544: Greek language package, thanks to @pRieStaKos
- #545: Portuguese (Brazil) language package, thanks to @marcuscarvalho6
- #598: Danish language package, thanks to @Djarnis
New Features
- #2, #387: Provide the default error messages
- #93, #385: Support translating error messages. Provide the Vietnamese language file
- #121: Add events for form validate successfully or not
- #125: Support dynamic fields
- #130: Add
addField()
andremoveField()
methods for managing dynamic fields, thanks to @jcnmulio - #164: Add
container
option for indicating the element showing all errors - #175: Showing errors in tooltip or popover
- #195: Add events for field validation
- #211, #235: Add new method
getInvalidFields()
that returns all invalid fields - #275: Add
destroy()
method - #282, #347: Use error message that is returned from callback, remote validators
- Add
status.field.bv
event which is triggered after updating the field status. It can be used to solve #300, #301 - #316: Add
isValidContainer(container)
method - #320: Add
separator
option to the date validator - #323: Add
isValidField(field)
method - #324: Add
success.validator.bv
anderror.validator.bv
events triggered after a validator completes - #332: Add UK phone number support for the phone validator, thanks to @aca02djr
- #336: Add
$field
instance to the callback validator - #356: Add
group
option - #374: Add Singapore postal code to the zipCode validator, thanks to @thisisclement
- #406: Add
revalidateField(field)
method - #433: Add
resetField(field, resetValue)
method - #434: Add
updateMessage(field, validator, message)
method
Changes
- #42: Remove the submit button from
submitHandler()
. You can use newgetSubmitButton()
method to get the clicked submit button - #109: Remove the
setLiveMode()
method $.fn.bootstrapValidator.helpers
renamesmod_11_10
tomod11And10
,mod_37_36
tomod37And36
- Remove
submitHandler()
option. Usesuccess.form.bv
event instead:
v0.4.5 and earlier versions
$(form).bootstrapValidator({
submitHandler: function(form, validator, submitButton) {
...
}
});
v0.5.0
Using success.form.bv
event:
$(form)
.bootstrapValidator(options)
.on('success.form.bv', function(e) {
// Prevent form submission
e.preventDefault();
var $form = $(e.target),
validator = $form.data('bootstrapValidator'),
submitButton = validator.getSubmitButton();
// Do whatever you want here ...
});
Improvements
- #244: Only enable the submit buttons if all fields are valid, thanks to @smeagol74
- #262: Improve the
updateStatus()
method. The plugin now doesn't show the errors, feedback icons of given field if there are uncompleted validators - #274: Fix feedback icons in
input-group
, thanks to @tiagofontella - #287, #291: Only send the submit button which is clicked. It's an enhancement for #238
- #297: Disable feedback icons for particular fields
- #348: The uri validator now provides an option to support private/local network address
- #364: Clicking the feedback icon also effect to the checkbox, radio fields
- #366: Don't change the enable setting when the new one is the same
- #371: Add H character to the Canadian postcode, thanks to @jzhang6
- #382: Add JSHint to Grunt build
- #388: Allow to override the default options. Useful for using multiple forms in the same page
- #393: The remote validator adds support for dynamic
url
and method type (GET/POST), thanks to @ericnakagawa - #416, #448: Add
updateOption()
method for updating the particular validator option, thanks to @AlaskanShade - #420: Enable/disable particular validator
- #422: Exclude particular field by
excluded
option ordata-bv-excluded
attribute - #426: Add test suite
- #430: between, greaterThan, lessThan add support for comparing to other field, return value of a callback function
- #431: Add built time to the build file
- #432: Define the callback via
data-bv-callback-callback
attribute - #447: zipCode validator allow to set the country code via another field or callback, thanks to @AlaskanShade
- #451: Validation of numeric fields with decimal steps, thanks to @Azuka
- #456: Adjust the feedback icon position for
.input-group
element - #465: Support dynamic message
Bug Fixes
- #288: Fix date validator issue on IE8
- #292: Fix identical validator issue with not clearing
has-error
class, thanks to @alavers - #305, #306, #307: Fix
inclusive
option in the between, greaterThan and lessThan validators, thanks to @johanronn77 - #310, #475: The date validator still return valid if the value doesn't contain digits
- #311: file validation extension is case sensitive
- #312: Fix broacast typo in the uri validator, thanks to @mrpollo
- #313: Fix the file validator issue on IE 8
- #314: The creditCard validator doesn't work on IE 8
- #315: The cvv validator doesn't work on IE 8
- #325: The
threshold
option doesn't work on IE 8 - #358: The zipCode validator doesn't work for Canadian zip code
- #375: Don't submit form when the callback validator completes and the submit button isn't clicked
- #377: The id, vat validators should return
false
if the country code is not supported - #389: When using multiple forms with HTML attributes on the same page, the plugin options will be the same as the last one
- #401: stringLength validator allows spaces after max length
- #411: Fix the ean validator when the check digit is zero, thanks to @manish-in-java
- #417: IPv6 validator doesn't work
- #425: Custom trigger event is ignored by field validators
- #447: Skip the
_isExcluded()
when initializing the form. This fixes #269, #273. Thanks to @AlaskanShade - #483, #487: Added the letters 'W' and 'Z' in the second and third letter list for Canada postal code, thanks to @jzhang6
- #492, #493: Fixed Chilean ID (RUT/RUN) finished in 'K' or 'k', thanks to @marceloampuerop6
Document
- #259: Typo "Support almost Bootstrap forms", thanks to @lloydde
- #261: English fix to 'amazing contributors' section, thanks to @lloydde
- #278: Update the choice validator document, thanks to @MrC0mm0n
- #303: Fix typo in remote validator document, thanks to @MartinDevillers
- #334: No ID is specified on the form object for registration, thanks to @jjshoe
- #423: Add default column to settings table, thanks to @MartinDevillers
- #452: Update 'United State' to 'United States', thanks to @mike1e
Language Packages
- #396: German language package, thanks to @logemann
- #474: Hungarian language package, thanks to @blackfyre
- #478: Simplified and traditional Chinese language package, thanks to @tureki
- #494: Chilean Spanish language package, thanks to @marceloampuerop6
- Add
$.fn.bootstrapValidator.helpers.date
for validating a date, re-used in date, id, vat validators - #233: Add
threshold
option - #232: Add id validator
- #242: Add
separator
option to the numeric validator - #248: Add isin (International Securities Identification Number) validator
- #250: Add rtn (Routing transit number) validator
- #251: Add cusip (North American Securities) validator
- #252: Add sedol (Stock Exchange Daily Official List) validator
- The zipCode validator adds support for Italian, Dutch postcodes
- #245: The cvv validator should support spaces in credit card, thanks to @evilchili
- Change default
submitButtons
to[type="submit"]
to supportinput type="submit"
- #226: Fix the conflict issue with MooTools
- #238: The submit buttons are not sent
- #253: The iban validator does not work on IE8
- #257: Plugin method invocation don't work
- Fix the issue that the hidden fields generated by other plugins might not be validated
- When parsing options from HTML attributes, don't add the field which hasn't validators. It improves fixes for #191, #223
- Add
$.fn.bootstrapValidator.helpers.mod_11_10
method that implements modulus 11, 10 (ISO 7064) algorithm. The helper is then reused in validating German and Croatian VAT numbers - Add
$.fn.bootstrapValidator.helpers.mod_37_36
method that implements modulus 37, 36 (ISO 7064) algorithm, used in GRid validator - #213: Add EAN (International Article Number) validator
- #214: Add GRId (Global Release Identifier) validator
- #215: Add IMEI (International Mobile Station Equipment Identity) validator
- #216: Add ISMN (International Standard Music Number) validator
- #217: Add ISSN (International Standard Serial Number) validator
- #191, #223: Support using both the
name
attribute andselector
option for field - #206: Indicate success/error tab
- #220: Add UK postcode support for the zipCode validator
- #229: The date validator supports seconds
- #231: Wrong prefix of Laser credit card number
- Add
$.fn.bootstrapValidator.helpers.luhn
method that implements the Luhn algorithm - #77: Add file validator
- #179: Add vat validator, support 32 countries
- #198, #199: Add Canadian Postal Code support for the zipCode validator, thanks to @Francismori7
- #201: The choice validator supports
select
element - #202: Activate tab containing the first invalid field
- #205: Plugin method invocation
- #207: IE8 error. The field is only validated when its value is changed. It also fixes #153, #193, #197
- #209: The
excluded: ':disabled'
setting does not work on IE 8, thanks to @adgrafik - #210: The isbn validator accepts letters and special characters
- #168: Add siren and siret validators, thanks to @jswale
- #177: Add Vehicle Identification Number (VIN) validator
- #184: Add
excluded
option - #171: The phone validator now supports +1 country code and area code for US phone number, thanks to @tomByrer
- #173: The remote validator allows to override
name
option, thanks to @jswale - #178: Do not validate fields that
enabled
is set tofalse
, thanks to @henningda - #182: Improve zipCode validator, thanks to @gercheq
- #169: Better to say:
{validatorname}
and{validatoroption}
must be lowercase, thanks to @tomByrer
- #144, #158: Fixed an issue that the custom submit handler is not fired from the second time
- #106: Prevent the
validate()
method from submit the form automatically. So we can callvalidate()
to validate the form - #131: Doesn't trigger validation on the first focus
- #145: The row state is now only marked as success if all fields on it are valid
- #157: Added support for element outside of form using the
selector
option - #159, #163: User doesn't need to submit the form twice when remote validator complete, thanks to @jswale
- #162: Fix errors in IE 8, thanks to @adgrafik
- #166, #167: The phone validator now also checks the length of US phone number, thanks to @gercheq
- #14, #57: Set validator option by using HTML 5 attributes
Form attributes:
<form
data-bv-message="This value is not valid"
data-bv-feedbackicons-valid="glyphicon glyphicon-ok"
data-bv-feedbackicons-invalid="glyphicon glyphicon-remove"
data-bv-feedbackicons-validating="glyphicon glyphicon-refresh"
>
Field attributes:
<input type="text" class="form-control" name="username"
data-bv-message="The username is not valid"
data-bv-notempty data-bv-notempty-message="The username is required and cannot be empty"
data-bv-stringlength="true" data-bv-stringlength-min="6" data-bv-stringlength-max="30" data-bv-stringlength-message="The username must be more than 6 and less than 30 characters long"
data-bv-different="true" data-bv-different-field="password" data-bv-different-message="The username and password cannot be the same as each other"
data-bv-remote="true" data-bv-remote-url="remote.php" data-bv-remote-message="The username is not available"
/>
- Support HTML 5 input types:
HTML 5 attribute | Validator |
---|---|
min="..." |
greaterThan validator |
max="..." |
lessThan validator |
maxlength="..." |
stringLength validator |
pattern="..." |
regexp validator |
required |
notEmpty validator |
type="color" |
hexColor validator |
type="email" |
emailAddress validator |
type="range" |
between validator |
type="url" |
uri validator |
- #74, #103, #122: Set the custom trigger event
It's possible to use data-bv-trigger
attribute:
<form data-bv-trigger="keyup">
<input type="text" class="form-control" name="firstName" placeholder="First name"
data-bv-trigger="keyup" />
...
<input type="text" class="form-control" name="lastName" placeholder="First name"
data-bv-trigger="blur" />
</form>
or trigger
option:
$(form).bootstrapValidator({
trigger: 'blur', // Set for all fields
fields: {
firstName: {
trigger: 'keyup', // Custom for each field. Can be 'event1 event2 event3'
validators: {
...
}
},
lastName: {
trigger: 'blur',
validators: {
...
}
}
}
});
<div class="form-group">
<input class="form-control" type="text" name="surveyAnswer[]" />
</div>
<div class="form-group">
<input class="form-control" type="text" name="surveyAnswer[]" />
</div>
<div class="form-group">
<input class="form-control" type="text" name="surveyAnswer[]" />
</div>
- #109: Add
setLiveMode()
method to turn on/off the live validating mode - #114: Add iban validator for validating IBAN (International Bank Account Number)
- #116: Add uuid validator, support UUID v3, v4, v5
- #128: Add numeric validator
- #135: Add integer validator
- #138: Add hex validator
- #139: Add stringCase validator to check a string is lower or upper case
- #137: Register the plugin with jQuery plugins site
- #133: The regexp validator allows to pass a string
- #140: Do not validate hidden (
type="hidden"
) and invisible element, thanks to @easonhan007 disableSubmitButtons()
is now marked as a public API- The first parameter of
updateStatus()
method now accepts the field name only - #126: Submit button remains disabled after calling custom
submitHandler
and the form is valid - #132: The
fields.[fieldName].message
option is not used when showing the error message
- #50: Don't validate disabled element
- #34, #105: Cannot call
form.submit()
insidesubmitHandler
- #77, #117: The notEmpty validator doesn't work on file input
- #120: Handle case where a field is removed after the bootstrap validation, thanks to @patmoore
- #56: Add
selector
option for each field. The field can be defined by CSS validator instead of thename
attribute - #107: Add
container
option for each field to indicate where the error messages are shown - #5: Add ip validator. Support both IPv4 and IPv6
- #6: Add isbn validator, support both ISBN 10 and ISBN 13
- #7: Add step validator
- #95: Add mac validator
- #96: Add base64 validator
- #97: Add cvv validator
- #99, #100: Add phone validator. Support US phone number only, thanks to @gercheq
- #112: creditCard validator now validates both IIN ranges and length
- #4: Add date validator
- #72, #79: Improve
updateStatus()
method to make the plugin play well with another - #80: Add
enabled
option andenableFieldValidators()
method to enable/disable all validators to given field - #90: Add
bower.json
file, thanks to @ikanedo - #3, #92: Support more form controls on the same row
- Remove the
columns
option. Now the plugin works normally no matter how many columns the form uses - #102: The
resetForm
method now only resets fields with validator rules - #82, #84: The error messages aren't shown if the form field doesn't have label
- #89:
submitHandler
or default submission isn't called after remote validation completes
- #44: Rewrite entirely using Deferred
- #26, #27, #67: Add choice validator, thanks to @emilchristensen
- #31: The remote validator supports dynamic data
- #36, #58: Add method to validate form manually
- #41: Disable submit button on successful form submit
- #42: Add submit button to
submitHandler()
parameter - #48: Add optional feedback icons
- #64: Support Danish zip code, thanks to @emilchristensen
- #65: Support Sweden zip code, thanks to @emilchristensen
- #70: Support custom grid columns
- #71: Show all errors
- #76: Add
resetForm()
method - #50: Don't validate disabled element
- #51: Submit after submit doesn't work
- #53, #54: Fix notEmpty validator for radios and checkboxes, thanks to @kristian-puccio
- #55: The plugin doesn't validate other fields if the remote validator returns
true
- #62: The callback validator passes wrong parameter, thanks to @iplus
- #59: Add example for Rail field convention, thanks to @narutosanjiv
- #60: Update the installation guide, thanks to @vaz
- #73: Describe which version should be included in the Usage section
- #15: Focus to the first invalid element
- #31: remote validator: Allow to set additional data to remote URL
- #32, #43, #47: Only validate not empty field
- #39: Validate existing fields only
- #34: Avoid from calling form submit recursively
- #40: Fix the issue when the form label doesn't have class
- #24: Add
live
option - #20: Add custom submit handler using
submitHandler
option - #9: Add creditCard validator
- #18: Add different validator
- #21: Add callback validator
- #22: Support form that labels are placed in extra small (
col-xs-
), small (col-sm-
), medium (col-md-
) elements - #25: The regexp validator does not work
- Added
submitButtons
option - #16: Added disabling client side validation in HTML 5
- #17: Added support for default Bootstrap form without labels
- #19: Added support for select box validator