2010-02-11 12 views
3

如何從Flex組件 這種編程方式刪除驗證程序刪除驗證是我的方法如何從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

Validator.enabled屬性允許您啓用和禁用驗證器。當enabled屬性的值爲true時,驗證器被啓用;當該值爲假時,驗證器被禁用。當驗證器被禁用時,它不派發事件,並且validate()方法返回null。

例如,您可以通過使用數據綁定,如下面的代碼顯示設置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

嗯..多數民衆贊成沒關..但我的問題是我不想寫在mxml中的所有驗證程序。我想在提交時檢查Util.validateRequired(txt)..當我按提交兩次而沒有在文本框中寫入任何東西以便驗證失敗時,我在錯誤彈出窗口中出現兩次相同的錯誤消息。 – Nachiket 2010-02-12 05:15:44

+0

關閉另一個驗證器,然後從按鈕單擊事件調用驗證器功能。 2010-02-12 13:00:51

4

我有同樣的問題,我的理解,我不得不先下一清除最後的驗證一。

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

這是一個有點POG,但它完成了工作!

希望它有幫助!

0

我也遇到了類似的問題。在我的情況下,根本原因是我每次調用驗證時都創建了驗證器對象(就像您一樣)。因此,UIComponent將其視爲不同的驗證器對象(請參閱UIComponent.errorObjectArray)並再次存儲錯誤消息。解決方案是有一個全局或靜態驗證器,它爲我解決了重複的錯誤消息。

+0

您是否閱讀過接受的答案? – 2012-10-28 19:14:32