Validator form plugin

Simple plugin for form validation

Description

This plugin validate form

Initialization

Validator.run(selectors, options); // selectors - node|nodeList|string

Markup

One example of markup

<form action="" class="js-validate" method="POST">
  <div class="form-group">
    <label for="name">Name</label>
    <input type="text" id="name" name="name" placeholder="Name" data-valid="required|minLen(2)">
  </div>
  <div class="form-group">
    <label for="e-mail">Email</label>
    <input type="text" id="e-mail" name="e-mail" placeholder="E-mail" data-valid="required|email"/>
  </div>
  <button>Send<button/>
</form>

Options

All options with defaults

{
  // automatically display errors
  showErrors: true,

  // triggers to run validation
  checkChange: true,
  checkInput: false,
  checkBlur: false,

  // to automatically display errors
  // showErrors must be enabled
  containerSelector: '.form-group',
  errorClass: 'has-error',
  errorHintClass: 'error-hint',

  // Validator Events
  onSuccess(event) { event.preventDefault(); /* do something */ },
  onError(errors) { /* do something with errors object */ },
  onChange(field) { /* field object */ },
  onReset(event) { /* reset form and removing errors */}

  // Custom rules
  validators: {
    regex: {
      isHuman: {
        pattern: /^human$/i, // check `word` in the field
        error: 'You must type the word human' // error message
      }
    }
  }
}

Simple localization

For example russian messages

Validator.i18n = {
  required: 'Данное поле обязательно для заполнения',
  minLen: 'Минимально допустимое количество символов равно %s%',
  maxLen: 'Максимально допустимое количество символов равно %s%',
  email: 'Поле e-mail имеет неверный формат',
  number: 'Введенные данные должны быть числом',
  equalTo: 'Введенные данные не совпадают'
}

Validator.run('.js-validate', options);

Custom messages using the data-attributes data-valid-msg-{method_name}

<input type="text" data-valid="required|email" data-valid-msg-email="Invalid email format"/>

Demo

Gender