Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   проверка заполнения input text (http://www.flasher.ru/forum/showthread.php?t=182507)

lissa81 25.07.2012 12:25

проверка заполнения input text
 
Здравствуйте

подскажите пожалуйста

есть текстовая строчка в формате input text, можно ли сделать проверку на ее заполнение??

КорДум 25.07.2012 12:45

Код AS3:

if (tf.text.length)

Как самый примитивный вариант, не учитывающий, что в поле могут быть просто пробелы. А вообще, нужно написать свою функцию trim, которая уберет пробелы с начала и с конца, вернет строку, у которой и надо смотреть длину.

lissa81 25.07.2012 13:07

а как можно убрать пробелы????

caseyryan 25.07.2012 13:13

Код AS3:

function isEmpty(text:String):Boolean {
    text = text.replace(/\s{2,}/g, ""); // уберет все избыточные пробелы (если их больше 2 подряд)
    return text.length < 1 || text == "" || text == " ";
}
if (isEmpty(tf.text)) {
    trace("текстовое поле пустое");
}

п.с. писал прямо здесь. Не тестировал.

lissa81 25.07.2012 13:43

увы что то не работает(

caseyryan 25.07.2012 14:06

Только что специально проверил. Всё работает.
Код AS3:

package  {
        import flash.display.Sprite;
        import flash.text.TextField;
        /**
        * ...
        * @author
        */

        public class Main extends Sprite {
 
                public function Main() {
                        var tf:TextField = new TextField();
                        tf.text = "  ";
                        trace(isEmpty(tf.text)); // true
                        tf.text = " text";
                        trace(isEmpty(tf.text)); // false
                }
 
                private function isEmpty(text:String):Boolean {
                        text = text.replace(/\s{2,}/g, "");
                        return text.length < 1 || text == "" || text == " ";
                }
        }
}


КорДум 25.07.2012 14:15

Код AS3:

if (str.replace(" ", "").length) trace("не пусто");


lissa81 25.07.2012 14:54

спасибо за помощь

Жень Шень 25.07.2012 18:33

Давненько не постился. Вот вариант написанный еще при изучении АС3. Проверяется на любой набор спереди и в конце строки.
Код AS3:

import flash.events.MouseEvent;
// btn - кнопка на сцене
this.btn.addEventListener(MouseEvent.CLICK, handler)
 
function handler(e:MouseEvent):void {
        // input_txt - поле ввода не сцене
        var str:String = trim(this.input_txt.text)
        if (str == "") {
                trace ("Поле не заполнено")
        } else {
                trace("Все хокей")
        }
}
 
// Удаление начальных и конечных символов (по умолчанию пробелов)
function trim(_str:String, _symbol:String=" "):String {
        while (_str.indexOf(_symbol) == 0) {
                _str = _str.substr(_symbol.length);
        }
        if (_str != "") {
                while (_str.lastIndexOf(_symbol) == _str.length - _symbol.length) {
                        _str = _str.substr(0,_str.length - _symbol.length);
                }
        }
        return _str;
}

Написано в кадре для простоты.
Пока писал - ответили. ну пусть будет как вариант

КорДум 25.07.2012 18:54

Мне тут написали, что с табами работать не будет. Ок ))
Код AS3:

if (str.replace(" ", "").replace(/\t/, "").length) {
    trace("не пусто");
}

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

Добавлено через 2 минуты
Код AS3:

if (str.replace(/[\t\s]/, "").length) {
    trace("не пусто");
}

Во!


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

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