2010-02-11 4 views
3

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

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

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

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

<?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

hmm .. thats okay .. но моя проблема в том, что я не хочу писать все валидаторы в mxml. Я хочу проверить, как Util.validateRequired (txt) на submit .. когда я нажимаю submit дважды, не записывая ничего в текстовое поле, поэтому проверка достоверности falis, я получаю такое же сообщение об ошибке дважды при всплывании ошибки. – Nachiket

+0

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

4

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

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

это своего рода POG, но он выполнил свою работу!

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

0

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

+0

Вы прочитали принятый ответ? –

Смежные вопросы