Максимальное значение для TextInput во Flex - PullRequest
0 голосов
/ 03 августа 2011

Кто-нибудь знает способ запретить пользователю вводить число свыше 100 в поле ввода текста в flex?

т.е. пользователь может ввести любое число от 0 до 100 включительно, но не 101

Заранее спасибо за любые советы!

Ответы [ 3 ]

5 голосов
/ 03 августа 2011

Попробуйте, это должно дать вам результаты, которые вы ищете - это не позволит вам ввести что-либо вне диапазона и пометит это как недействительное (также с отличным сообщением всплывающей подсказки).

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

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

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"    
               xmlns:mx="library://ns.adobe.com/flex/mx"     
               xmlns:s="library://ns.adobe.com/flex/spark"  height="100%" width="100%">

    <fx:Declarations>
        <s:NumberValidator id="numberValidator" property="text" 
            minValue="0" maxValue="100"  
            source="{inputNumber}" trigger="{inputNumber}" triggerEvent="change" 
            valid   ="inputNumber.toolTip=inputNumber.text;" 
            invalid ="inputNumber.text=inputNumber.toolTip;"/>
    </fx:Declarations>

    <s:TextInput id="inputNumber" restrict="0-9"/>

</s:Application>

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

4 голосов
/ 03 августа 2011

Вы должны проверить это вручную, если это ваш код

<input change='_handleTextChanges(event)' />

и это обратный вызов

function _handleTextChanges(evt:Event):void{
     var target:TextInput = evt.currentTarget as TextInput;
     if(!target) return;
     if(parseInt(target.text) > 100){
         Alert.show("You can't enter a number grater than 100");
         target.text = "100";
     }
     if(parseInt(target.text) < 0){
         Alert.show("You can't enter a number smaller than 0");
         target.text = "0";
     }
}

Я не пробовал, но должно работать

1 голос
/ 03 августа 2011

Несколько вариантов:

  1. Используйте NumericStepper и укажите свойство максимум .С помощью специальной темы оформления можно даже убрать стрелки вверх и вниз, чтобы она действовала как TextInput.
  2. Прослушивание событий keyUp или keyDown и запись вашихсобственная проверка, чтобы пользователь не мог набирать числа больше 100. Вы можете привязать это к NumericValidator .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...