Build your web apps using Smart UI
Working with Validator
Overview
The Validator validates the inputs on the page, by predefined rules, passed to the class as a first parameter.
Initialization
A Validator object can be instantiated by calling the Validator class constructor with a single parameter with rules. The parameter type must be array of objects and each member of the "rules" array can contains these fields:
- input [String] - Contains the selector of the input, which requires validation
- message [String] - The error message text, visible if the input is invalid.
- action [String] - Describes the events, applied on the input. You can use all the standard javascripts events, to control when the validation will start.
- type [String] - Describes the validation type
- "required" - Checks if the input is not empty
- "notNumber" - Checks if the input value is not numeric
- "startWithLetter" - Checks if the input value starts with letter
- "numeric" - Checks if the input value is numeric
- "phone" - Checks the input value for valid phone number /if this format doesn't work for your country, you should try type: 'pattern'/
- "stringLength" - Validates the length of input value. To work properly, you should pass also min and max properties
- "pattern" - Checks if the input value matches the pattern from the pattern property
- "compare" - Checks if the input value matches the result of the user defined function, declared in the comparisonTarget property
- "custom" - Custom validation, that executes the user defined function in the validationCallback property.
- "email" - Checks if the input value is valid email
- "zipCode" - Checks if the input value is valid zip code
- "ssn" - Checks if the input value is valid ssn
Here is how to validate simple form in your code:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" type="text/css" href="../../source/styles/smart.default.css" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/2.2.10/webcomponents-bundle.js"></script>
<script type="text/javascript" src="../../source/smart.element.js"></script>
<script type="text/javascript" src="../../source/smart.validator.js"></script>
<script type="text/javascript" src="../../source/smart.date.js"></script>
<script type="text/javascript" src="../../source/smart.scrollbar.js"></script>
<script type="text/javascript" src="../../source/smart.button.js"></script>
<script type="text/javascript" src="../../source/smart.tooltip.js"></script>
<script type="text/javascript" src="../../source/smart.listbox.js"></script>
<script type="text/javascript" src="../../source/smart.dropdownlist.js"></script>
<script type="text/javascript" src="../../source/smart.combobox.js"></script>
<script type="text/javascript" src="../../source/smart.textbox.js"></script>
<script type="text/javascript" src="../../source/smart.passwordtextbox.js"></script>
<script type="text/javascript">
window.onload = function () {
'use strict';
const rules = [
{ input: '#userInput', message: 'Username is required!', action: 'keyup, blur', type: 'required' },
{ input: '#userInput', message: 'Your username must be between 3 and 12 characters!', action: 'keyup, blur', type: 'stringLength', min: 3, max: 12 },
{ input: '#passwordInput', message: 'Password is required!', action: 'keyup, blur', type: 'required' },
{ input: '#passwordInput', message: 'Your password must be between 4 and 12 characters!', action: 'keyup, blur', type: 'stringLength', min: 4, max: 12 },
{ input: '#passwordConfirmInput', message: 'Confirm Password is required!', action: 'keyup, blur', type: 'required' },
{ input: '#passwordConfirmInput', message: 'Passwords doesn\'t match!', action: 'keyup, focus', type: 'custom',
validationCallback: function (input) {
if (input.value === document.querySelector('#passwordInput').value) {
return true;
}
return false;
}
}
];
const validator = new Smart.Utilities.Validator(rules, '#validationsummary');
document.querySelector('#submitFormButton').addEventListener('click', () => {
validator.validate();
});
}
</script>
<style>
.demo-container {
max-width: 750px;
margin-left: 10px
}
.field {
margin-left: 10px;
min-height: 36px;
margin-bottom: 10px;
}
.field .field-label {
float: left;
width: 30%;
padding-top: 5px;
}
.field .field-value {
width: 70%;
float: right;
}
.field .field-value > :first-child:not(.error-holder) {
width: 100%;
}
.fieldset #submitFormButton {
width: 100%;
}
#validationsummary {
clear: both;
padding-top: 10px;
}
#validationsummary span {
display: block;
color: #d9534f;
}
</style>
</head>
<body>
<div class="demo-container">
<form>
<div class="field">
<div class="field-label">User name</div>
<div class="field-value">
<smart-text-box select-all-on-focus placeholder="User name" id="userInput"></smart-text-box>
</div>
</div>
<div class="field">
<div class="field-label">Your password</div>
<div class="field-value">
<smart-password-text-box select-all-on-focus placeholder="Your password" id="passwordInput"></smart-password-text-box>
</div>
</div>
<div class="field">
<div class="field-label">Confirm password</div>
<div class="field-value">
<smart-password-text-box select-all-on-focus placeholder="Confirm password" id="passwordConfirmInput"></smart-password-text-box>
</div>
</div>
<div class="fieldset">
<div id="registerButton" class="submit-button">
<smart-button id="submitFormButton" type="button" class="success">Send</smart-button>
</div>
</div>
</form>
<div id="validationsummary"></div>
</div>
</body>
</html>
Here is how to validate input with custom pattern:
const rules = [
{ input: '#phone-validation', message: 'The phone must have a correct USA phone format', action: 'valuechanged, blur', type: 'pattern', pattern: /^\+\s*1\s*\(\s*[02-9]\d{2}\)\s*\d{3}\s*-\s*\d{4}$/ },
];
const validator = new Smart.Utilities.Validator(rules);
validator.validate();
Here is example how to use the 'custom' type property:
const rules = [
{ input: '#birthInput', message: 'Your birth date must be between 1/1/1900 and 1/1/2025.', action: 'change', type: 'custom', validationCallback: function () {
var date = document.querySelector('#birthInput').value;
var result = date.year() >= 1900 && date.year() <= 2025;
return result;
}
}
];
const validator = new Smart.Utilities.Validator(rules);
validator.validate();
Public methods
| Method | Description |
| attach() | Attach method adds the event listeners |
| detach() | Removes all the event listeners |
| reset() | Clears the error messages |
| validate() | Validates all the inputs |