Pracując z pluginem jQuery validation czasami okazuje się, że domyślnie wbudowane walidatory są niewystarczające dla naszych potrzeb. W takiej sytuacji nie pozostaje nic innego, jak stworzenie własnych walidatorów.

Dodawanie własnej metody walidującej

Aby dodać własną metodę walidującą należy skorzystać z następującej funkcji jQuery validation:

jQuery.validator.addMethod(name, validationFunction, message);

Jako parametry funkcja ta przyjmuje:

  • name – nazwa walidatora
  • validationFunction – funkcja walidująca pole
  • message – komunikat zwracany, gdy wartość walidowanego pola jest nieprawidłowa

Funkcja walidująca jest anonimowa i ma następującą postać:

function(value, element, param);

Jako parametry przyjmuje ona:

  • value – wartość pola
  • element – walidowane pole formularza
  • param – dodatkowe parametry dla metody walidującej

Jak widać dodawanie nowej metody walidującej do jQuery validate jest bardzo proste. Dla przykładu poniżej zamieszczam kody kilku metod walidujących, które mogą przydać się w codziennej pracy.

Walidator sprawdzający, czy ilość znaków w danym polu ma dokładnie ustaloną wartość

jQuery.validator.addMethod("exactlength", function(value, element, param) {
  return this.optional(element) || value.length == param;
}, jQuery.format("Please enter exactly {0} characters."));

Użycie walidatora:

$("#form").validate({
  rules: {
    zipCode: {
      exactlength: 5
    }
  }
});

Walidator sprawdzający czy w polu formularza występują tylko i wyłącznie litery

jQuery.validator.addMethod("lettersonly", function(value, element) {
  return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters only please"); 

Użycie walidatora

$("#form").validate({
  rules: {
    firstName: {
      lettersonly: true
    }
  }
});

Generyczny walidator sprawdzający zawartość pola zadanym wyrażeniem regularnym

jQuery.validator.addMethod("accept", function(value, element, param) {
  return value.match(new RegExp("." + param + "$"));
});

Użycie walidatora ze sprawdzeniem czy w polu formularza są tylko cyfry:

$("#form").validate({
  rules: {
    someNumberField: {
      accept: "[0-9]+"
    }
  }
});

Użycie walidatora ze sprawdzeniem czy w polu formularza są tylko litery:

$("#form").validate({
  rules: {
    someNumberField: {
      accept: "[a-zA-Z]+"
    }
  }
});

Jak widać dodawanie własnych metod walidujących jest dość proste. Jedyna rzeczą, o której należy pamiętać jest dodanie własnych metod walidujących przed wywołaniem metody validate();

jQuery validation – własne walidatory
Tagged on:             

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Social Widgets powered by AB-WebLog.com.