Description
I would like to use bootstrap 4 and bootstrap 5 default validation classes, but seem not possible.
For display .invalid-feedback
the input must have .is-invalid
or .valid-feedback
with .is-valid
, example:
<div class="form-group">
<input type="text" class="form-control is-invalid" required="">
<div class="invalid-feedback">This field is required</div>
</div>
<div class="form-group">
<input type="text" class="form-control is-valid" required="">
<div class="valid-feedback">Looks good</div>
</div>
If I change the default class name like so:
let validator = new Pristine(form, {
classTo: 'form-group',
errorClass: 'is-invalid',
successClass: 'is-valid',
errorTextParent: 'form-group',
errorTextTag: 'div',
errorTextClass: 'invalid-feedback'
})
The errors is not visible because class .is-invalid
is not added to input but to form-group, example:
<div class="form-group is-invalid">
<label for="email">E-Mail Address</label>
<input type="email" id="email" name="email" class="form-control" required="">
<div class="pristine-error invalid-feedback">This field is required</div>
</div>
I could solve this by adding extra CSS like .is-invalid .invalid-feedback {display: block}
(not completely because need also to consider input group border, dark theme of bootstrap 5, etc). Would be good to have a way to do this without extra CSS, if possible without breaking change.
Bootstrap has also a class .was-validated, that show invalid feedback depending on HTML5 validation, like .was-validated :invalid ~ .invalid-feedback {display: block}
But this doesn't work for example with input type email where HTML5 consider valid email@example
while pristine correctly mark this as invalid.