Форум 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)
-   -   проверка вводимых символов в input text (http://www.flasher.ru/forum/showthread.php?t=137292)

casper_61 10.03.2010 02:13

проверка вводимых символов в input text
 
Делаю небольшой калькулятор для сайта. нарисовались две проблемы
1. как ограничить вводимые символы цифрами(чтоб нельзя было вводить буквы)
2. как заставить флэш понимать запятую, как десятичный разделитель(если ввести 0.5 работает, если 0,5 то не работает)

кто нибудь сталкивался с подобным?

заранее спасибо за ответы

samana 10.03.2010 02:47

На первый вопрос:
только цифры ну и точка )
Код AS1/AS2:

textField_txt.restrict="0-9."


mooncar 10.03.2010 10:26

Расшифруйте - что означает "понимать запятую"? Не вводите запятую и все. Отключите ее с помощью restrict.
Если же вы беспокоитесь о пользователях, которые не "догонят", что надо вводить точку как разделитель, и будут усиленно по ней колотить, сделайте при вводе автозамену запятой на точку. Только так обычно не делается. Есть стандартный интерфейс, и все.

casper_61 10.03.2010 12:37

Цитата:

Если же вы беспокоитесь о пользователях
Для их удобства это и делается
Цитата:

сделайте при вводе автозамену запятой на точку
вот как это сделать, я и не знаю. Про restrict я уже понял.

mooncar 10.03.2010 14:18

Учитесь пользоваться хелпом.
У текстового поля есть событие onChanged.
Прикрутите к нему эту замену.
Код AS1/AS2:

text_tf.onChanged = function  () {
        this.text = this.text.split(',').join('.');
};

где text_tf - имя вашего поля

Полагаю, что это самое простое решение, если вводится немного текста.

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


Можно так попробовать реализовать полную проверку:
Код AS1/AS2:

text_tf.restrict = '0-9.,';
text_tf.maxChars = 10;
 
text_tf.onChanged = function  () {
 
        if (!dotExists) {
                this.text = this.text.split(',').join('.');
        }
 
        if (this.text.indexOf('.') > 0) {
                this.restrict = '0-9';
                dotExists = true ;
        }                       
        else {
                this.restrict = '0-9.,';
                dotExists = false ;
        }
};


casper_61 10.03.2010 17:18

mooncar
Спасибо огромное. Все получилось. Кстати за проверку второй точки отдельное спасибо, у меня этот момент как то вылетел из головы.

По ходу назрел еще один вопрос, можно ли программно выделить текст в TextField? как это сделать на AS3 нашел, а есть ли в AS2 аналог
Код AS3:

TextField.setSelection()


mooncar 10.03.2010 18:24

Код AS1/AS2:

Selection.setFocus(text_tf); //ставим фокус 
Selection.setSelection(0, 3); //выделяем конкретную подстроку (можно убрать, тогда выделится весь текст)


Converse 21.06.2011 20:10

Ребята, а как ограничить кпримеру неправильный ввод? Если пользователь набрал не 0,5 а ,5?
Или в поле допускается ввод 3 знаков, это цифры и точка, вводимый диапазон от 0 до 1, т.е. допускается 0, 0.1, 0.2.... 1 . Если вводим первую цифру 0, то можно вписать еще 2 знака, если 1, то больше ничего не вписывается.


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

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