Comunidad de diseño web y desarrollo en internet online

Función para validar varios Campos de Texto

Citar            
MensajeEscrito el 01 Jul 2010 05:27 am
Saludos!
Estoy trabajando con Flex 3 y necesito hacer una función que me verifique todos los campos de texto que tengo al momento de darle click a un Botón. estuve mirando cómo hacerlo y encontré lo siguiente:

<mx:StringValidator source="{txtCampo}" property="text"
tooShortError="La debe tener una descripción."
tooLongError="Máximo 40 caracteres."
minLength="4" maxLength="40"
trigger="{btnBoton}" triggerEvent="click"
/>
De esta forma funciona pero tendría que hacer uno por cada campo de texto que tenga.

Agradezco sus comentarios.

Por Willcho

3 de clabLevel



 

Colombia

msie8
Citar            
MensajeEscrito el 01 Jul 2010 01:53 pm
Exactamente, puedes declarar los validators via código, pero igual uno por campo, luego si estás ducho en programación, puedes usar un array de nombres de campo, de mensajes de error y un loop para validar todos (útil si son al menos 5)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Jul 2010 02:30 am
Ok, muchas gracias!

Por Willcho

3 de clabLevel



 

Colombia

msie8
Citar            
MensajeEscrito el 08 Jul 2010 02:33 am
Un peq ejemplo:
<code>
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/08/13/validating-flex-forms-using-the-validator-classes/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
creationComplete="init();">

<mx:Script>
<![CDATA[
import mx.validators.Validator;
import mx.events.ValidationResultEvent;
import mx.validators.ZipCodeValidatorDomainType;
import mx.controls.Alert;

[Bindable]
private var validatorArr:Array;

private function init():void {
validatorArr = new Array();
validatorArr.push(shippingName_stringValidator);
validatorArr.push(shippingAddress1_stringValidator);
validatorArr.push(shippingCity_stringValidator);
validatorArr.push(shippingState_numberValidator);
validatorArr.push(shippingZipCode_zipCodeValidator);
validatorArr.push(shippingZipCode_stringValidator);
}

private function validateForm(evt:MouseEvent):void {
var validatorErrorArray:Array = Validator.validateAll(validatorArr);;
var isValidForm:Boolean = validatorErrorArray.length == 0;
if (isValidForm) {
Alert.show("The form is valid!", "Valid form...");
} else {
var err:ValidationResultEvent;
var errorMessageArray:Array = [];
for each (err in validatorErrorArray) {
var errField:String = FormItem(err.currentTarget.source.parent).label
errorMessageArray.push(errField + ": " + err.message);
}
Alert.show(errorMessageArray.join("\n\n"), "Invalid form...", Alert.OK);
}
}

private function resetForm(evt:MouseEvent):void {
shippingName.text = "";
shippingAddress1.text = "";
shippingAddress2.text = "";
shippingCity.text = "";
shippingState.selectedIndex = -1;
shippingZipCode.text = "";
}
]]>
</mx:Script>

<mx:XMLList id="statesXMLList">
<state label="California" data="CA" />
<state label="Oregon" data="OR" />
</mx:XMLList>

<mx:StringValidator id="shippingName_stringValidator"
source="{shippingName}"
property="text"
minLength="2" />

<mx:StringValidator id="shippingAddress1_stringValidator"
source="{shippingAddress1}"
property="text"
minLength="2" />

<mx:StringValidator id="shippingCity_stringValidator"
source="{shippingCity}"
property="text"
minLength="2" />

<mx:NumberValidator id="shippingState_numberValidator"
source="{shippingState}"
lowerThanMinError="This field is required."
property="selectedIndex"
minValue="0" />

<mx:ZipCodeValidator id="shippingZipCode_zipCodeValidator"
source="{shippingZipCode}"
property="text"
requiredFieldError="Please enter a zip code in ZIP+4 format."
domain="{ZipCodeValidatorDomainType.US_ONLY}" />

<mx:StringValidator id="shippingZipCode_stringValidator"
source="{shippingZipCode}"
property="text"
tooShortError="Please enter a zip code in ZIP+4 format."
minLength="10" maxLength="10" />

<mx:Form>
<mx:FormHeading label="Shipping Information" />
<mx:FormItem required="true" label="Name">
<mx:TextInput id="shippingName" maxChars="96" />
</mx:FormItem>
<mx:FormItem required="true" label="Address">
<mx:TextInput id="shippingAddress1" maxChars="128" />
</mx:FormItem>
<mx:FormItem label="">
<mx:TextInput id="shippingAddress2" maxChars="128" />
</mx:FormItem>
<mx:FormItem required="true" label="City">
<mx:TextInput id="shippingCity" maxChars="128" />
</mx:FormItem>
<mx:FormItem required="true" label="State">
<mx:ComboBox id="shippingState" prompt="Please select a State..." selectedIndex="-1" dataProvider="{statesXMLList}" labelField="@label" />
</mx:FormItem>
<mx:FormItem required="true" label="ZIP Code">
<mx:TextInput id="shippingZipCode" maxChars="10" restrict="0-9 \-" />
</mx:FormItem>
<mx:FormItem>
<mx:HBox>
<mx:Button label="Submit" click="validateForm(event)" />
<mx:Button label="Reset" click="resetForm(event)" />
</mx:HBox>
</mx:FormItem>
</mx:Form>

</mx:Application>
</code>

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Jul 2010 02:52 am
xcom, muchas gracias por su ejemplo, muy completo.

Gracias!

Por Willcho

3 de clabLevel



 

Colombia

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.