Как программно удалить проверку из flex-компонента - PullRequest
3 голосов
/ 11 февраля 2010

Как программно удалить проверку из flex-компонента Это мой метод

public static function validateRequired(txt:TextInput, errorMessage:String="This field is required"):Boolean
        {
                var v:Validator = new Validator();

                v.listener = txt;
                var result:ValidationResultEvent = v.validate(txt.text);
                var returnResult:Boolean = (result.type == ValidationResultEvent.VALID);
                //Alert.show("validation result is " + returnResult);
                if (!returnResult) {
                    v.requiredFieldError = errorMessage;
                }
                return returnResult;
        }

Но, так как каждый раз я создаю новый валидатор, всплывающее окно содержит несколько сообщений, таких как

Это поле обязательно для заполнения.
Это поле обязательно для заполнения.

Как удалить сообщения об ошибках, связанные с компонентом?

Ответы [ 3 ]

4 голосов
/ 14 июля 2011

У меня была та же проблема, я понял, что мне нужно очистить последнюю проверку перед следующей.

private function resetValidationWarnings():void {
                for each (var validator:Validator in arrValidators) {
                    validator.dispatchEvent(new ValidationResultEvent(ValidationResultEvent.VALID));
                }
            }

это своего рода ПОГ, но он сделал свою работу!

надеюсь, это поможет!

3 голосов
/ 11 февраля 2010

Свойство Validator.enabled позволяет включать и отключать валидатор. Когда значение свойства enabled равно true, валидатор включен; когда значение ложно, валидатор отключен. Когда валидатор отключен, он не отправляет никаких событий, а метод validate () возвращает ноль.

Например, вы можете установить свойство enabled с помощью привязки данных, как показано в следующем коде:

<?xml version="1.0"?>
<!-- validators\EnableVal.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 

    <mx:ZipCodeValidator id="zcVal" 
        source="{inputA}" 
        property="text" 
        required="true" 
        enabled="{enableV.selected}"/>

    <mx:TextInput id="inputA"/> 
    <mx:TextInput/> 
    <mx:CheckBox id="enableV" 
        label="Validate input?"/>
</mx:Application>
0 голосов
/ 04 марта 2012

Я также столкнулся с подобной проблемой. В моем случае основной причиной является то, что я создал объект валидатора каждый раз, когда вызывается валидация (как вы это делали). В результате UIComponent видит его как другой объект валидатора (см. UIComponent.errorObjectArray) и снова сохраняет сообщение об ошибке. Решение состоит в том, чтобы иметь глобальный или статический валидатор, и он решает двойное сообщение об ошибке для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...