2011-01-13 3 views
0

Я работаю с flex 3.5, и у меня есть проблема с валидатором. У меня есть поле, которое динамически имеет o, не имеет установленного валидатора, проблема в том, что в определенный момент поле не имеет назначенного валидатора, а textInput имеет красную границу.Ошибка проверки валидатора

Я не знаю, что мне нужно, чтобы удалить красный маркер?

Вот пример моего валидатора:

Это валидатор:

<mx:CreditCardValidator id="ccV" 
     cardTypeSource="{cardTypeCbx.selectedItem}" 
     cardTypeProperty="data" 
     cardNumberSource="{ccNumberTextInput}" 
     cardNumberProperty="text" required="true"/> 

У меня есть TextInput с именем ccNumberTextInput и комбо имени cardTypeCbx

Когда я должен установить валидатор :

validatorArr = new Array(); 
validatorArr.push(ccV); 
validateForm(); 

И когда он мне не нужен:

validatorArr = new Array(); 
validateForm(); 

Функция validateForm является:

private function validateForm():void 
{ 
    var validatorErrorArray:Array = Validator.validateAll(validatorArr); 
    isFormValid = validatorErrorArray.length == 0; 
} 

И у меня есть кнопка, которая была включить или отключить, поскольку она имеет привязку с булевым варом isFormValid.

Самое странное, что при удалении валидатора кнопка становится, но красная рамка по-прежнему находится в текстовом поле.

Спасибо в продвижении.

ответ

0

Вместо того, чтобы модифицировать массив с помощью валидаторов, вы должны включить/отключить каждый валидатор, когда вам это нужно. Поскольку привязка между валидатором и проверяемым компонентом все еще существует, даже если у вас нет всех валидаторов в вашем массиве. Тогда могут произойти две вещи: либо предыдущая проверка остается, либо другая может быть вызвана этой привязкой.

Для получения дополнительной информации см. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/validators/Validator.html?filter_flex=4.1&filter_flashplayer=10.1&filter_air=2#enabled.

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