Опубликован: 04.11.2006 | Доступ: свободный | Студентов: 4462 / 498 | Оценка: 4.46 / 3.96 | Длительность: 39:17:00
Урок 13:

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

Сверка с перечнем возможных значений

Бывают ситуации, когда введенное пользователем значение должно соответствовать одному из нескольких возможных. Допустим, вы просите пользователя указать какой-либо цвет (например, "red", "yellow" или "blue"), а он нечаянно вводит "rod" или "yullow". Подобные ошибки тоже можно и нужно отслеживать.

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

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

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


  1. Откройте файл validate4.fla из папки Lesson13/Assets.

Мы продолжаем работу с проектом, начатым в предыдущих упражнениях.

  1. Откройте панель Действия, выделите кадр 1 слоя Actions и добавьте в конец имеющегося скрипта описание новой функции:
function validateState() {
  states = ["California", "Indiana", "North Carolina", "Oklahoma"];
  matchFound = false;
  i = -1;
  while (++i < states.length) {
    if (state.text == states[i]) {
      matchFound = true;
    }
  }
  if (!matchFound) {
    errors.push("Please enter a valid state.");
  }
}

Функция validateState() будет проверять то, что введено в текстовое поле state.

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

Следующим действием создается переменная matchFound и ей присваивается начальное значение false. Вскоре вы поймете, почему это важно.

Следующие несколько строк функции составляют оператор цикла, который перебирает все значения в массиве states, сравнивая каждое из них с текстом, введенным в поле state. Если значения совпадают, matchFound получает значение true. Если ни одного совпадения так и не нашлось, значение этой переменной так и остается false (как в начале) – это значит, что введенное значение ошибочно.


Последняя часть функции – оператор if, выполняемый после того, как завершит свою работу оператор цикла. Если matchFound равно false (совпадений не встретилось), в массив errors добавляется сообщение об ошибке (как и в тех функциях, которые мы создали до этого).

  1. В функцию validateForm(), после вызова функции validateEmail(), вставьте еще один вызов функции:
validateState();

Это – вызов только что описанной нами функции. Теперь функция validateForm() сможет проверять и названия штатов. Этот вызов функции стоит перед оператором, проверяющим длину массива errors, ведь функция тоже может добавить в массив сообщения об ошибках. В итоге, если функции validateName(), validateEmail() или validateState() обнаружат ошибки, соответствующие сообщения будут отображены в поле errorLog.

  1. Командой Управление > Проверить фильм (Control > Test Movie) запустите тестирование проекта.

Введите заведомо неправильный название штата (не входящее в массив) в поле email, и посмотрите, чем закончится процесс проверки. Кнопкой Clear можно вернуть визуальные элементы фильма и внутренние данные к изначальным значениям.

  1. Закрыв тестовый фильм, вернитесь в среду разработки и сохраните этот файл под именем validate5.fla.

Мы продолжим работу с этим файлом в следующем упражнении.

Проверка числовых значений

Проверка числовых значений не слишком отличается от проверки строк, о которой мы уже говорили.

В этом упражнении мы создадим последнюю проверочную функцию – она будет проверять данные, введенные в поле zip. Правильный почтовый индекс США должен удовлетворять двум условиям:

  • Длина. Он должен состоять из пяти символов (цифр).
  • Тип. Это должно быть число; текст не годится.

Совет Вообще при проверке может еще понадобиться сравнить введенное число с неким эталоном, чтобы определить, какое из них больше или меньше – но уж это-то совсем простая для вас задача!

  1. Откройте файл validate5.fla из папки Lesson13/Assets.

Мы продолжаем работу с проектом, начатым в предыдущих упражнениях.

  1. Откройте панель Действия, выделите кадр 1 слоя Actions и добавьте в конец имеющегося скрипта описание новой функции:
function validateZip() {
  if (zip.text.length != 5 || isNaN(zip.text) == true) {
    errors.push("Please enter a valid zip.");
  }
}

Эта функция будет проверять то, что введено пользователем в текстовое поле zip, по двум условиям, установленным нами в начале: длине и типу. Условный оператор, в том случае, если текстовое поле zip содержит не пять символов или является не числом, а текстом, в массив errors добавляется сообщение "Please enter a valid zip".

Примечание Если вам нужно освежить в памяти информацию о функции isNaN(), загляните в упражнение Проверка текстовых строк.

  1. В функцию validateForm(), после вызова функции validateState(), вставьте еще один вызов функции:
validateZip();

Это – вызов только что описанной нами функции. Теперь функция validateForm() сможет проверять и почтовый индекс. Этот вызов функции стоит перед оператором, проверяющим длину массива errors, ведь функция тоже может добавить в массив сообщения об ошибках. В итоге, если функции validateName(), validateEmail(), validateState() или validateZip() обнаружат ошибки, соответствующие сообщения будут отображены в поле errorLog.

  1. Командой Управление > Проверить фильм (Control > Test Movie) запустите тестирование проекта.

Введите заведомо неправильный почтовый индекс в поле zip и посмотрите, чем закончится процесс проверки. Кнопкой Clear можно вернуть визуальные элементы фильма и внутренние данные к изначальным значениям.

  1. Закрыв тестовый фильм, вернитесь в среду разработки и сохраните этот файл под именем validate6.fla.

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

Если в процессе проверки окажется, что все введенные пользователем правила верны, монтажный стол фильма переместится к сцене Confirm. В этой сцене будет отображено некое сообщение, составленное на основе проверенных данных, а мы приукрасим это сообщение – заодно изучим возможности Flash в плане форматирования текста с использованием HTML.

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

Вот задание:

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

Галина Кузнецова
Галина Кузнецова

Добрый день.

Можно ли получить среду Flash для обучения бесплатно?

Ольга Ремез
Ольга Ремез
Латвия, Рига
Светлана Ведяева
Светлана Ведяева
Россия, Саратов