Как стать автором
Обновить

Использование Low Pro и jQuery

Время на прочтение6 мин
Количество просмотров758
Автор оригинала: Tane Piper

Что такое Low Pro?


Так что же такое Low Pro? Это плагин, который позволяет сделать JavaScript более объектно-ориентированным через делегацию событий. Архитектура jQuery плагинов позволяет в простой форме расширить функционал ядра.Ранее не существовало легкого пути в создании макроса, который создал бы несколько типов событий на один элемент. Но это время пришло!

Наверное, самый простой способ объяснить, как работает Low Pro – это создать быструю демонстрацию. Иногда я нахожу, что многие туторы предполагают наличие предыдущего знакомства с технологией, зная это, я постараюсь сделать тутор максимально простым. Тем не менее, этот пример использует несколько других плагинов, которые не рассматриваются в данном туторе:
  • Live Query – Low Pro использует данный плагин для облегчения связи с динамическими элементами DOM.
  • jQuery Validation – Мы будем использовать этот плагин для того, чтобы показать как связывать другие функции плагинов с событиями.

У обеих плагинов отличная документация, следовательно, если вы желаете расширить базовый пример, почитайте её.

Пример №1: Создание повторно используемой регистрационной формы.


Для этого примеры мы создадим простую регистрационную форму. Несмотря на простой вид, её можно использовать во многих местах с небольшими, если требуется, модификациями. Надеюсь, разобрав этот шаблон, вы увидите много других приложений, которые могут быть повторно используемыми в таком же стиле.

Наш первый шаг – создать простенькую форму:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  «www.w3.org/TR/html4/strict.dtd»>
<html>
  <head>
 <meta http-equiv=«Content-Type» content=«text/html; charset=iso-8859-1» />
 <title>Lowpro Example</title>
 <script type=«text/javascript» src=«js/jquery.js» />
 <script type=«text/javascript» src=«js/jquery.livequery.js» />
 <script type=«text/javascript» src=«js/lowpro.jquery.js» />
 <script type=«text/javascript» src=«js/jquery.validate.js» />
 <script type=«text/javascript» src=«js/reg-form.js» />
  </head>
  <body></p>
<div id=«form-container»>
<form method=«post» action="." id=«lowpro-form»>
  <fieldset>
    <legend>User Details</legend></p>
<ul>
<li>
     <label for=«username»>Username</label></p>
<input type=«text» id=«username» name=«username» />
   </li>
<li>
     <label for=«email»>Email</label></p>
<input type=«text» id=«email» name=«email» />
   </li>
<li>
     <label for=«password1»>Password</label></p>
<input type=«password» id=«password1» name=«password1» />
   </li>
<li>
     <label for=«username»>Password (Again)</label></p>
<input type=«password» id=«password2» name=«password2» />
   </li>
</ul>
<input type=«submit» class=«register» value=«Register» />
  </fieldset>
   </form>
</p></div>
<p>  </body>
</html>

Теперь мы создадим наш JavaScript, назовем его reg-form.js. В нем мы создадим класс, который прикрепим к форме. Внутри этого класса, мы создадим функции, которые инициируют события. Каждый класс созданный с использованием Low Pro принимает форму $.klass({...});. Внутри фигурных скобок, мы используем природу прототипов JavaScript для создания псевдо-классов. Мы назовем наш пример RegisterForm
RegisterForm = $.klass({
  initialize : function(options) {</p>
<p>  }
});

Если вы разрабатывали, используя PHP, Python или Java, вы, наверное, уже видели подобное. Эта первая функция, initialize, зарезервированная функция в Low Pro, которая принимает один параметр(обсудим его позже). Данная функция всегда вызывается при связывании класса с элементом. Так как она не требует никакой инициации события, очень удобно устанавливать данные для инициализации или события для динамических DOM элементов.

Валидация


Первое, что мы должны сделать – это создать наши JavaScript правила проверки. Этот тутор не покрывает создание этих правил, тем не менее, они должны быть понятны. Если вы желаете больше информации, почитайте прекрасную документацию.
RegisterForm = $.klass({
  initialize : function(options) {
 this.element.validate({
   rules: {
  username: {
    required: true,
    minlength: 4
  },
  email : {
    required: true,
    email: true
  },
  password2 : {
    equalTo: "#password1"
  }
   },
   messages : {
  username : {
    required: 'Your username is required',
    minlength: 'The minimum number of characters is 4'
  },
  email : {
    required: 'You must enter your email',
    email: 'You must enter a valid email'
  },
  password2 : {
    equalTo: 'Your passwords must match'
  }
   }
 });
  }
});

Заметьте, что я использую this.element в отличии от $(‘#lowpro-form’) внутри функции. Low Pro предоставляет этот удобный псевдоним и вы всегда работаете с верным объектом. Если вы собираетесь написать сложную функцию, лучше всего в пределах функции, присвоить this.element другой переменной.

Сейчас код ничего не делает. Все потому, что мы должны привязать класс к форме. Вот где мы должны вернутся к старому доброму jQuery, который мы знаем и любим. Ниже этого класса поместите в файл:
$(document).ready(function(){
  $('#lowpro-form').attach(RegisterForm);
});

И так, открываем страницу в браузере и начинаем заполнять поля. Вы уже должны заметить, работу правил проверки полей. Поздравляю, вы только что написали свой первый повторно используемый класс с Low Pro!

Улучшения


Теперь, когда мы имеем правила проверок, давайте начнем делать форму более привлекательной. Для начала, что-нибудь простое. Давайте убедимся, что первое поле(username) всегда активно первым и пользователь может легко переключаться, используя Tab.
$('#username').focus();

Обновите страницу и сейчас ваше поле username должно получить фокус.

Давайте добавим немного перца – другое событие. Когда пользователь сабмитит форму, мы хотим, чтобы пользователь знал, что данные отправляются на сервер. Для этого мы уведомим пользователя, изменяя текст на кнопки с “Register” на “Submiting”.
RegisterForm = $.klass({
  initialize : function(options) {
 …
  },
  onsubmit : function() {
 $form = this.element;
 $('.register').val('Submitting');
  /* If your using Ajax it goes in here */
  return false;
  }
});

Итак у нас есть: Повторно используемая, полнофункциональная Ajax регистрационная форма с валидацией. Вы можете посмотреть на демо.

И напоследок, параметры функции инициализации. Во время подключения Low Pro класса, функция инициализации принимает объект, содержащий любые данные, которые нужно передать функции.
$('#myform').attach(MyFunction, {foo:'moo', bar:2}

В нашем примере выше, мы добавили тэг для показа сообщения дня. В HTML создайте div с классом motd. Далее, добавьте следующий код в функцию инициализации:
if (options.motd) {
  $('.motd').text(options.motd);
}

Сейчас, когда мы прикрепили наш класс к форме, мы используем следующее:
$(document).ready(function(){
  $('#lowpro-form').attach(RegisterForm, {motd: 'jQuery Rocks!'});
});

Теперь, когда вы обновите форму, вы должны увидеть сообщение на экране.

Теги:
Хабы:
Всего голосов 21: ↑11 и ↓10+1
Комментарии12

Публикации