|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
не работает preventDedault() для TextEvent.TEXT_INPUT
Нужно ограничить ввод в TextInput. Если новый введённый символ делает значение больше допустимого, запрещаем его ввод. (Изменение введённого значения не подходит, такое требование.)
Это не работает: _inputWidth = new TextInput(); _inputWidth.restrict = "0-9"; _inputWidth.addEventListener(TextEvent.TEXT_INPUT, onChangingWidth); private function onChangingWidth(e:TextEvent):void{ var value:Number = parseInt(_inputWidth.text + e.text); if(value > 8000) { //заходит сюда trace(e.cancelable); //выводит true e.preventDefault(); //введённый символ всё равно отображается! } } Последний раз редактировалось ALEX666; 01.07.2011 в 15:07. |
|
|||||
Регистрация: Mar 2011
Сообщений: 48
|
Вам не поможет TextEvent.TEXT_INPUT. В официальной документации это явно не описывается, но для предотвращения ввода на spark:TextInput'e вам стоит слушать TextOperationEvent.CHANGING и превентить ввод по операции указанной в эвенте. Там не указывается каким будет текстовое значение, но определить его можно по самой текстовой операции.
Есть еще один вариант - использовать TextOperationEvent.CHANGE и откатывать текстовую операцию при недопустимом новом значении. Третий вариант как самый дешевый - использовать некоторый контроллер-мидлмэн возвращающий предыдущее значение текстового поля, когда новое не соответствует паттерну. |
|
|||||
Насчёт 3-го варианта я думала, но он какой-то кривой вроде, некрасивый... а вот TextOperationEvent.CHANGING не использую ток потому что не знаю как там увидеть введённый символ..
"но определить его можно по самой текстовой операции." - а как именно? спасибо Добавлено через 10 минут ..2-ой вариант отменяет весь последний ввод, а не последний символ, поэтому не подходит( |
|
|||||
Регистрация: Mar 2011
Сообщений: 48
|
Цитата:
У него нам важны значения absoluteStart, absoluteEnd и text. Соответственно куда вставляем и какой текст. По этим значениям уже явно виден пользовательский ввод. Метод бесспорно нудный и сложный, но 100% действующий. |
|
|||||
Спасибо, такое объяснение и нужно было, хотя уже воспользовалась другим способом:
при событии TextOperationEvent.CHANGING - запоминаю имеющийся текст при событии TextOperationEvent.CHANGE - проверяю новое значение и возвращаю старое, если не подходит. |
Часовой пояс GMT +4, время: 09:29. |
|
« Предыдущая тема | Следующая тема » |
|
|