Шаг 155.
Библиотека jQuery. Интерактивные формы. Улучшение простой формы. Сообщения для обязательных полей

    На этом шаге мы рассмотрим изменение индикации обязательных полей.

    В нашей форме ввода контактной информации обязательные поля имеют атрибут class="required", что позволяет использовать его не только для реализации отклика на ввод пользователя, но и для визуального оформления. Все поля ввода, определяющие способ связи с пользователем, имеют атрибут class="conditional". Мы будем использовать эти классы для замены текста инструкций, выводимых в круглых скобках справа от каждого поля ввода.

    Начнем с установки значений переменных requiredFlag и conditionalFlag, а затем заполним элементы <span>, следующие за обязательными и условно-обязательными полями, текстом, хранящимся в этих переменных:

$(document).ready(function() { 
  var requiredFlag = ' * ';
  var conditionalFlag = ' ** ';

  $('form :input')
    .filter('.required')
      .next('span').text(requiredFlag).end()
    .end()
    .filter('.conditional')
      .next('span').text(conditionalFlag);
});

    Результаты выполнения этого скрипта приведены на рисунке 1.


Рис.1. Замена сообщений об обязательных полях

Полный текст этого примера можно взять здесь.

    Использование метода .end() позволяет нам расширить цепочку методов, чтобы мы могли продолжать работать с тем же набором элементов и свести к минимуму количество операций по созданию объектов и обходу дерева DOM. Вызов метода .end() выполняет один шаг назад в цепочке операций выбора элементов, возвращая набор элементов, который существовал перед последним вызовом метода, выполняющего обход дерева DOM. Здесь мы выполняем подряд два вызова метода .end(): первый вызов возвращает набор элементов, полученный вызовом метода .filter('.required'), а второй возвращает набор элементов, полученный вызовом функции $('form :input'). Благодаря этому, когда производится вызов .filter('.conditional'), отбирающий элементы с атрибутом class="conditional", выборка производится из всех элементов ввода внутри формы.

    Далее, так как одиночная звездочка (*) может оказаться не очень заметным индикатором для привлечения внимания пользователя, для всех обязательных полей мы также добавим к элементу <label> атрибут class="req-label" и применим правило font-weight: bold к этому классу. Для этого можно расширить цепочку методов еще больше.

$(document).ready(function() { 
  var requiredFlag = ' * ';
  var conditionalFlag = ' ** ';

  $('form :input')
    .filter('.required')
      .next('span').text(requiredFlag).end()
      .prev('label').addClass('req-label').end()
    .end()
    .filter('.conditional')
      .next('span').text(conditionalFlag);
});

    Результаты выполнения этого скрипта приведены на рисунке 2.


Рис.2. Выделение меток обязательных полей жирным шрифтом

Полный текст этого примера можно взять здесь.

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

    На следующем шаге мы продолжим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг