Опубликован: 04.11.2006 | Уровень: специалист | Доступ: платный
Урок 13:

Проверка и форматирование данных

Аннотация: Многие приложения просят пользователей предоставить информацию: номер телефона, адрес электронной почты и т.п. – для последующего использования или помещения в базу данных для хранения. Однако если эти приложения будут построены в расчете на то, что пользователь введет данные в правильном формате и без ошибок, этот расчет вряд ли оправдается; скорее всего, вскоре база данных будет забита кучей бессмысленных и путаных сведений. Что ни говори, пользователи частенько вводят информацию не совсем так, как требуется – а это значит, что данные нужно проверить, прежде чем приступить к их обработке. Поэтому требуется запрограммировать проверку введенных данных на соответствие определенному набору правил и ограничений. Если при проверке обнаружатся ошибочные данные, пользователю предлагается ввести их снова, либо (в некоторых случаях) программа может сама исправить данные, приведя к нужному формату.
Ключевые слова: приложение, создание функций, вывод, ПО, сообщение об ошибке, ActionScript, flash, адрес, электронная коммерция, условные операторы, функция, поле, telephone, значение, параметр, параметр функции, длина строки, индикатор, registration, confirm, field, email, ZIP, пользователь, опция, HTML, массив, скрипт, clear, создание массива, e-mail, имя пользователя, информация, enter, valid, встроенная функция, аргумент, NOT, out-of-the-box, выражение, push, индекс, очередь, перевод строки, операторы цикла, jack, renderer, text, AS, строка символов, специальный символ, cc:, COM, net, org, IndexOf, логические выражения, сочетания, подстрока, LastIndexOf, вызов функции, submit, RED, blue, список, переменная, динамическое текстовое поле, цвет текста, face, синтаксис, site, mx/s, background, завершение процесса, шрифт, кадр, управляющая последовательность, строковый тип, процессы обработки, конкатенация, тег, this, Registered, слово, State, with, information, Web, элемент текста, адресация, MovieClip, attachMovie, restriction, диапазон символов, bug-fix, scroll, undefined, имя переменной, component, компонент, checkbox, Actions, прямоугольник, координаты, запись, расстояние, верхняя граница, высота, нижняя граница, копирование, onchange, выход, объект, форматирование, css, cascading style sheets, left margin, margin, доступ, player, файл, строка данных, random, длина, indent, lead, underline

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

Внимание! Для работы с этим уроком необходимы учебные файлы, которые Вы можете загрузить здесь.

Что будет изучаться

В этом уроке:

  • Почему необходимо проверять данные
  • Выбор условий проверки
  • Выбор метода обработки ошибок, обнаруженных в процессе проверки
  • Создание функций для проверки текстовых строк, чисел и последовательностей
  • Форматирование динамических данных с применением HTML
  • Динамическое создание текстовых полей
  • Форматирование текста с помощью объекта TextFormat

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

Время выполнения

На выполнение этого урока требуется примерно два часа.

Файлы урока

Файлы-носители:

Нет

Стартовые файлы:

Lesson13/Assets/validate1.fla
Lesson13/Assets/flashWriter1.fla

Законченные проекты:

validate7.fla
flashWriter3.fla

Почему необходимо проверять данные

Мы с вами каждый день что-то, да проверяем – начиная с порядка слов в предложении (чтобы оно было построено правильно) и заканчивая сдачей в магазине. Так что разъяснять тут особенно нечего. Возьмем для примера такой вот телефонный номер: 555-34567.

Скорее всего, вы быстро поймете, что номер этот неверный. Ваш мозг, анализируя номер, обнаружит, что он состоит из восьми цифр. Сравнивая этот факт с известным ему правилом – "городские телефонные номера состоят из семи цифр", вам мозг сделает вывод, правильный ли это номер (истинный) или неправильный (ложный). Если номер правильный, значит, по нему можно позвонить. Если же номер неправильный, мозг выдаст вам сообщение об ошибке – что-нибудь вроде: "Этот номер неверный. Нужно узнать правильный, и тогда уже звонить."


Если представить процесс проверки по пунктам, получится примерно следующее:

  • Выбор критериев правильности данных.
  • Анализ предоставленных данных.
  • Сравнение этих данных с выбранными критериями.
  • Если данные верны – продолжение; если неверны – сообщение об ошибке, решение проблемы и новая проверка.

Мы будем называть этот процесс в ActionScript процедурой сверки. Ваш мозг анализирует данные на лету; в ActionScript процедура сверки тоже займет долю секунды.

Необходимость проверки данных во Flash-приложениях обычно возникает там, где от пользователя требуется ввод информации в текстовые поля – это, например, различные формы (имя, адрес, номер телефона и т.п.), пароли, вопросы викторин, карточки заказов электронной коммерции (количество, размер, цвет и т.п.).

Применение процедур проверки

Процедуру проверки можно представить как программную мини-машину внутри проекта, которая проверяет полученные данные и поступает соответствующим образом, в зависимости от того, верными ли оказались данные или нет. В большинстве своем процедуры сверки представляют собой функции, построенные на условном операторе ( if ).

Обычно процедуры сверки подразделяются на несколько самостоятельных функций – по одной для каждого типа проверяемых данных (например, одна функция для строк, одна для чисел и т.д.). Таким образом можно единожды написать функцию и затем использовать ее в любом месте проекта, избежав необходимости писать процедуру сверки везде, где возникает необходимость проверки данных.


Функции процедур сверки могут быть двух основных типов:

  • Не имеющие параметров, просто выполняющие определенные действия
  • Принимающие какие-либо параметры для обеспечения тех или иных дополнительных функциональных возможностей проекта.

Рассмотрим каждый из этих видов подробнее.

Процедура сверки без параметров обычно применяется просто для проверки определенного элемента данных. Допустим, нужно создать процедуру для проверки семизначного телефонного номера (состоящего из девяти символов: семи цифр и двух дефисов [-]), вводимого пользователем в текстовое поле с именем telephone. Структура такой функции будет выглядеть примерно так:

function validateTelephone () {
  if (telephone.length == 9) {
    // номер правильный, выполняемые действия
  } else {
    // номер неправильный, выполняемые действия
  }
}

Эта процедура способна проверять данные только в текстовом поле telephone, поскольку имя поля жестко запрограммировано в описании функции. Теперь взгляните, насколько более гибкой, универсальной может стать эта функция, если будет принимать пару аргументов:

function validateTelephone (lookForAreaCode, pNumber) {
  if (lookForAreaCode == true && pNumber.length == 13) {
    message.text = "Это правильный десятизначный телефонный номер";
  } else if (lookForAreaCode == false && pNumber.length == 9) {
    message.text = "Это правильный семизначный телефонный номер";
  }
  } else {
    message.text = "Это неправильный телефонный номер";
  }
}

При вызове этой функции сверки ей передаются два параметра: lookForAreaCode имеет значение true либо false и показывает, присутствует ли в телефонном номере код города; pNumber представляет собой сам проверяемый номер. Если в момент вызова функции параметр lookForAreaCode имеет значение true, то переданный функции телефонный номер ( pNumber ) считается верным только в том случае, если он десятизначный. Если же lookForAreaCode равно false, то верным будет считаться только семизначный номер.

Сам вызов процедуры проверки будет выглядеть, например, так:

validateTelephone(true, 812-555-12-34);

В результате обработки этого вызова в текстовом поле message будет выведено сообщение: "Это правильный десятизначный телефонный номер".

Совет Из предыдущих уроков вы должны помнить, что в качестве параметров функции могут указываться не только конкретные значения, но и переменные. Так, в приведенном примере при вызове функции в качестве второго параметра можно сослаться на соответствующее свойство текстового поля ( textField.text ).

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

В процессе проверки данных важную роль играют условные операторы, ведь сам этот процесс представляет собой не что иное, как проверку соответствия введенных данных определенным условиям. Какими же могут быть условия для проверки? Наиболее часто используют следующие.

  • Длина. Состоит ли значение из определенного числа символов? Например, почтовый индекс в США состоит, как правило, из пяти цифр. Значит, если введенный пользователем индекс состоит менее чем из пяти символов – это ошибка. Или, например, имя. Практически все имена и фамилии состоят хотя бы из двух букв, поэтому, если пользователь ввел только одну букву, видимо, имеет место ошибка. Нулевая длина строки означает, что пользователь вообще ничего не ввел. Если для вашего проекта требуется, чтобы было введено хоть что-то, нулевая длина тоже будет ошибкой.
  • Значение. Укладывается ли введенное значение в заданный диапазон? Предположим, вы предлагаете пользователю указать его возраст (правда, обычно это не практикуется). Тогда вы могли бы задать пределы от 18 до 100. И если введенное значение будет меньше 18 или больше 100, это будет считаться ошибкой.
  • Тип. Что, если пользователь введет строку там, где требуется число, или наоборот? Допустим, вы просите пользователя указать его рост (на практике этого, опять же, не применяют), а он вводит пицца. Это будет ошибкой, ведь требуется числовое значение.
  • Последовательность. В правильном ли формате введены данные? Иногда вводимые данные должны содержать числа, буквы и другие символы в определенной последовательности – например, номера телефонов (123-45-67), даты (23/01/04), номера каких-либо счетов (1-2345-67-890) и тому подобное. Пропущенные дефисы, слэши или другие символы будут считаться ошибкой.

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

Салтанат Бектегенова
Салтанат Бектегенова

Дострочное пересдача экзамена

 

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:

Евгения Дегтяренко
Евгения Дегтяренко
Украина, Запорожье
Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003