|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Валидация значения текствого поля при вводе.
Исходные данные:
Есть текстфилд, редактируемый. Есть некая функция, которая от множества факторов умеет проверить валидность строки. Эта функция не умеет выдавать ограничения на ввод, она умеет лишь проверить, допустима такая строка или нет. При вводе, если получаемое значение не валидно надо проигнорировать нажатие. Соответственно слушаю TextEvent.TEXT_INPUT. В момент возникновения события текст ещё не изменён, и если событие запревентить то текст не будет изменён. В ивенте есть поле text в котором содержится вводимый(вставляемый) текст. Как понять что получится в тексфиле в итоге. Не уж то брать текст из текстфилда, брать позицию курсора и выделения и заменять руками, а потом валидировать, костыль же. Ещё предлагают запомнить что там было, отловив Change проверить, и если некорректно, то заменить. Ни то ни другое мне не нравится. Есть варианты?
__________________
:) |
|
|||||
Цитата:
Я бы тут не над красотой решения думал, а над тем, как пользователю не запороть ввод. Или пользователю только через Crtl-v это поле можно будет править? Может быть просто красным светить, если не валидно и, по энтеру/потере фокуса - оставлять или возвращать исходный текст. Или еще как обойти проблему. P.S. проверка по change выглядит более простой в реализации P.S.2 если в 2-х словах: почему событие INPUT_TEXT содержит так мало информации и как это использовать, не следя за курсором - _не_ знаю |
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
Ну, скорее всего, потому что оно наступает ДО, и Адобвцы тупо поленились дважды обсчитать итоговое значение текстфилда, сославшись на логичность подхода-нет результата, нет и данных по результату.
|
|
|||||
В итоге посчитать придётся мне руками
__________________
:) |
|
|||||
Регистрация: Jun 2011
Сообщений: 60
|
Цитата:
|
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
Я так понимаю, не сработает, если текст пишется не в конец строчки, а посередине строки.
|
|
|||||
Цитата:
Цитата:
__________________
:) |
|
|||||
Регистрация: Jun 2011
Сообщений: 60
|
А, ну да. Теперь ясно. К тому же при удалении символов TextEvent.TEXT_INPUT не диспатчится.
|
Часовой пояс GMT +4, время: 00:40. |
|
« Предыдущая тема | Следующая тема » |
|
|