Форум 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=129944)

greenhill 14.09.2009 13:40

Динамическая проверка инпутов
 
Привет всем!
Помогите, пожалуйста, вот чем: стоит задача проверки выполнения введения данных в инпут. Как мне поставить прослушатель? Если можно пример кода, а то я понимаю как сделать, а что-то с синтаксисом проблемы.
И если можно, подскажите касательно фокуса. Например, в первом поле мы две цифры ввели и фокус должен переместиться на следуюущий инпут.
Если можно немного кода :)

flash33 14.09.2009 14:21

У текстинпут есть событие change. По этому событию проверяйте его содержимое (if (textInput.text==value) {}) А перевод фокуса после ввода двух символов в том же событии change:
Код AS1/AS2:

if (textInput.text.length >=2)  setFocus(nextTextInput);


greenhill 14.09.2009 15:59

А change работает в случае создания текстового поля и присвоенмя ему"Input Text". Или это только для Компонент?

KiL33 14.09.2009 16:14

Код AS1/AS2:

var txt:TextField;
count_txt = 4;
count_char = 2
var main:MovieClip = createEmptyMovieClip("bigMovie", 998);
for (var i:Number = 0; i<count_txt; i++) {
        txt = main.createTextField("my_txt"+i, i, 100, 25*i, 300, 20);
        txt.border = true;
        txt.type = "input";
        txt.id = i;
        txt.onChanged = function() {
                val = this._name.substring(6);
                if (main["my_txt"+val].length<2) {
                } else {
                        next_mc(this.id);
                }
        };
}
function next_mc(id:Number) {
        count = id+1;
        Selection.setFocus(_root.main["my_txt"+count]);
}
//button
var btn:MovieClip = this.createEmptyMovieClip("btn", 3);
btn.beginFill(0xFF0000);
btn.moveTo(10,10);
btn.lineTo(160,10);
btn.lineTo(160,40);
btn.lineTo(0,40);
btn.lineTo(0,10);
btn.endFill();
btn._y = 110;
btn._x = 0;
var pole_txt:TextField = btn.createTextField("pole_txt", 4, 80, 15, 0, 0);
var my_fmt:TextFormat = new TextFormat();
pole_txt.autoSize = true;
my_fmt.color = 0xFFFFFF;
my_fmt.size = 14;
pole_txt.html = true;
pole_txt.htmlText = '<b>Проверить</b>';
pole_txt.setTextFormat(my_fmt);
btn.onPress = vse_ok;
function vse_ok() {
        if (main.my_txt0.text.length<count_char || main.my_txt1.text.length<count_char || main.my_txt2.text.length<count_char || main.my_txt3.text.length<count_char) {
                mess.text = "Заполните все поля";
        } else {
                //trace("ok: "+i);
                mess.text = "Все поля заполнены: "+i;
        }
}
var mess:TextField = bigMovie.createTextField("mess", 4, txt._x, txt._y+25, 300, 20);

P.S.Если я Вам помог, помогите и мне: R-кошелёк 201418752220


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

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