Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Помогите сделать проверку! (http://www.flasher.ru/forum/showthread.php?t=113913)

dimer 13.07.2008 14:29

Помогите сделать проверку!
 
Помогите пожалуйста вставить проверку введенных данных в строки.

Вот код:

Код:

tf_fmt = new TextFormat();
tf_fmt.color = "0x666666";
// Текстовое поле для имени
_root.createTextField("name_txt", 1, 10, 20, 300, 20);
with (name_txt) {
        border = true;
        borderColor = "0xCCCCCC";
        type = "input";
        multiline = false;
        text = "Введите ваше имя";
        setTextFormat(tf_fmt);
}
// При передачи фокуса текстовому полю убиваем всё что в нём написано
name_txt.onSetFocus = function() {
        this.text = "";
        delete this.onSetFocus;
};
// Текстовое поле для e-mail
_root.createTextField("mail_txt", 2, 10, 50, 300, 20);
with (mail_txt) {
        border = true;
        borderColor = "0xCCCCCC";
        type = "input";
        multiline = false;
        text = "Введите ваш телефон";
        setTextFormat(tf_fmt);
}
// При передачи фокуса текстовому полю убиваем всё что в нём написано
mail_txt.onSetFocus = function() {
        this.text = "";
        delete this.onSetFocus;
};
// Текстовое поле для сообщения
_root.createTextField("message_txt", 3, 10, 80, 300, 20);
with (message_txt) {
        border = true;
        borderColor = "0xCCCCCC";
        type = "input";
        multiline = false;
        text = "Введите ваш E-mail";
        setTextFormat(tf_fmt);
}
// При передачи фокуса текстовому полю убиваем всё что в нём написано
message_txt.onSetFocus = function() {
        this.text = "";
        delete this.onSetFocus;
};
// Кнопка "Отправить"
_root.attachMovie("button", "but_mc", 4, {_x:10, _y:280});
but_mc.createTextField("tf", 1, 0, 0, 300, 20);
b_fmt = new TextFormat();
b_fmt.color = "0xFFFFFF";
b_fmt.align = "center";
with (but_mc.tf) {
        selectable = false;
        text = "Отправить заявку";
        setTextFormat(b_fmt);
}
// При нажатии на кнопку запускаем функцию F_sendMail
but_mc.onPress = function() {
        F_sendMail(name_txt.text,mail_txt.text,message_txt.text);
};
//Функция отправки сообщения
F_sendMail = function (Name, Mail, Message) {
        // Создаём мувик для хранения переменных
        _root.createEmptyMovieClip("v", 120);
        v.name = Name;
        v.mail = Mail;
        v.message = Message;
        // Отправляем данный php - скрипту
        v.loadVariables("mail.php", "POST");
};
// Что бы не было проблем с кодировкой при передачи текста php
System.useCodepage = true;


Alex_beginner 13.07.2008 14:40

Здравствуйте dimer!

А в чем, собственно, проблема!!?

1. Используйте обработчик onChanged и в нем проверяйте корректность введеных данных.
Совет: Использование with {} допустимо, но не рекомендуемо, в особенности в циклах - замедляет работу скрипта. Старайтесь обходиться без него (with).

dimer 13.07.2008 14:44

интересно, тут все такие умные или только я такой глупый... если бы я знал все эти слова то конечно бы сделал, но отнюдь... потому и прошу объяснить наглядно.Спасибо!

Alex_beginner 13.07.2008 15:07

Уважаемый dimer!

Я никоим образом не хотел обидеть Вас. Простите.

Давайте уточним:

Вы хотите выполнить проверку на корректность введенных данных на этапе ввода данных или же после нажатия кнопки "Отправить". В первом случае, необходимо написать код проверки корректности данных в обработчике onChanged:

Код:

this.createTextField("myInputText_txt", 99, 10, 10, 300, 20);
myInputText_txt.border = true;
myInputText_txt.type = "input";

myInputText_txt.onChanged = function(textfield_txt:TextField)
{
//здесь проверяем textfield_txt на корректность. Критерии проверки незнаю !!!
};

Во втором случае, Вам необходимо написать код проверки на корректность в функции F_sendMail.

Не привожу готовый код, поскольку незнаю критерии проверки.

Ну для e-mail, я предполагаю критерием проверки будет служить наличие в e-mail'е амперсанда (@). А для полей name_txt и message_txt увы я не знаю критериев. Кстати, в поле для e-mail у Вас по умолчанию будет выведено "Введите Ваш телефон". Это так и должно быть?

dimer 13.07.2008 15:13

проверить введены ли данные, дело в том что там не просто пустая строка в строке уже изначчально есть текст например "введите ваше имя", нужно просто проверить что введен текст отличный от этого и желательно, если конечно не трудно сказать проигрывателю после нажатия на кнопку отправить, если все нормально play.

Спасибо.

Alex_beginner 13.07.2008 15:37

Дело тут в том, что при передачи фокуса любому полю в Вашем коде это поле очищается и на момент события onChanged (возникает когда Вы изменяете значение в поле хотя бы на один символ) оно уже очищенно и имеет какое-то значение длинной в 1 символ.

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

Далее порядок будет таким:
1. Создаете обработчик события onChanged для каждого текстовго поля, используя приведенный выше пример;
2. В каждом обработчике пишите код, проверяющий введенные данные на соответствие определнному критерию, характерному только для данного конкретного поля;
3. Далее записываете в ячейку массива, указывающую на соотвествующее текстовое поле значения "значение поля корректно", "значение поля не корректно", "значение поля еще не проверялось" (или другие удобные, но аналогичные этим значения) по результатам проверки. Необходимо отметить, что все ячейки глобального массива в начале алгоритма должны содержать значение "значение поля еще не проверялось".
4. В функции F_sendMail пишите проверку наличия в каждой ячейке массива значение "значение поля корректно " делая так

Код:

for (var i:Number = 1; i<=количество_txt_полей;i++)
{
    if (globalArr[i]=="значение поля корректно")
        {
            Flag&=true;
        }else
        {
            Flag&=false;
        }
}
  if (Flag)
        {
                //код, выполняющийся при заполненности всех полей корректными данными
        }

Глобальная переменная Flag в начале алгоритма должна иметь значение true.

iNils 13.07.2008 15:45

Alex_beginner, слишком много лишнего в кода, зачем продолжать проверку, когда хоть одно поле не проходит проверку?
Должно быть так
Код:

var flag:Boolean = true;
for (var i:Number = 0; i < количество_txt_полей; i++) {
        if (globalArr[i] != "значение поля корректно") {
                flag = false;
                break;
        }
}
if (flag) {
        //код, выполняющийся при заполненности всех полей корректными данными
}


Alex_beginner 13.07.2008 15:46

Согласен.

dimer 13.07.2008 16:13

к сожалению ничего не понял, но спасибо за разъяснения...:wacko:

Alex_beginner 13.07.2008 17:55

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

dimer 13.07.2008 20:20

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


Часовой пояс GMT +4, время: 00:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.