Skip to main content

addField

Defines validation rules for the new field.

The method return a JustValidate instance, so it could be used as a chain (like .addField().addField()...).

The method takes 3 arguments:

addField(field, rules, config);

where:

field - a string selector or DOM element of the field

rules - array of validation rule objects (described here)

config - some specific settings applied to this particular field. Replace settings from default config (described here):

errorFieldCssClass​

Overrides errorFieldCssClass

errorFieldStyle​

Overrides errorFieldStyle

errorLabelCssClass​

Overrides errorLabelCssClass

errorLabelStyle​

Overrides errorLabelStyle

successFieldCssClass​

Overrides successFieldCssClass

successFieldStyle​

Overrides successFieldStyle

successLabelCssClass​

Overrides successLabelCssClass

successLabelStyle​

Overrides successLabelStyle

tooltip​

Overrides tooltip

errorsContainer​

Overrides errorsContainer

successMessage​

Custom text if the field is valid (validation passes for all rules).

Type: string

Default value: undefined (success messages are not shown)

Example​

const validation = new JustValidate('#form');

validation
.addField('#name', [
{
rule: 'name',
},
{
rule: 'minLength',
value: 3,
},
{
rule: 'maxLength',
value: 20,
},
])
.addField(
'#email',
[
{
rule: 'required',
},
{
rule: 'email',
},
{
validator: (value) => () =>
new Promise((resolve) => {
isEmailExist(value).then((isExist) => {
resolve(!isExist);
});
}),
errorMessage: 'Email already exists!',
},
],
{
errorsContainer: '.custom-errors-container',
successMessage: 'Everything looks good!',
}
);

Also, it's possible to do validation based on other fields:

const validation = new JustValidate('#form');

validation.addField('#repeat-password', [
{
validator: (value, fields) => {
if (fields['#password'] && fields['#password'].elem) {
const repeatPasswordValue = fields['#password'].elem.value;

return value === repeatPasswordValue;
}

return true;
},
errorMessage: 'Passwords should be the same',
},
]);