validador de proveedor de datos de combobox chispa

Quiero dar validaciones al cuadro combinado chispa cuando el usuario ingresa un valor diferente al valor en el proveedor de datos de ese cuadro combinado. ¿Alguien puede darme el código de cómo dar validación si el usuario ingresa un valor diferente al valor en el proveedor de datos y en debe ocurrir la validación del cambio de enfoque. Gracias

preguntado el 03 de mayo de 12 a las 08:05

Si no desea que un usuario complete otros valores, ¿por qué no usa DropDownList? -

El requisito es que debe ser editable y seleccionable, pero la lista desplegable no es editable y tampoco se selecciona la primera vez que el usuario presiona cualquier carácter en el teclado, debemos cambiar el enfoque para que se muestre el valor seleccionado en DropDownList. -

1 Respuestas

puedes configurar la propiedad textInput al cuadro combinado y administre la verificación de entrada desde la función asociada...

<fx:Script>
    <![CDATA[
        protected function change(event:TextEvent):void
        {

        }
    ]]>
</fx:Script>

<s:ComboBox  textInput="change(event)"/>

flash.display.InteractiveObject.textInput

Se envía cuando un usuario ingresa uno o más caracteres de texto. Varios métodos de entrada de texto pueden generar este evento, incluidos teclados estándar, editores de métodos de entrada (IME), sistemas de reconocimiento de voz o voz e incluso el acto de pegar texto sin formato sin información de formato o estilo.

Tipo de evento:
flash.events.TextEvent.TEXT_INPUT

EDITAR

<fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        import mx.controls.Alert;
        import mx.events.FlexEvent;
        //dataprovider initialization
        [Bindable]private var d:ArrayCollection = new ArrayCollection([
            {name: "Values 1"}, {name: "Values 2"}, {name: "Values 3"}
            ]);

        protected function change(event:TextEvent):void
        {      // if enter key is pressed
            if (event.text.charAt(event.text.length-1) == "\r")
            {       
                // if the text inserted in the combobox is one of the 
                // item in the dataprovider 
                if (comboBox.selectedIndex >= 0)
                    Alert.show("something selected");
                else   // if the text is not an item in the dataprovider
                    Alert.show("nothing selected");

            }
        }
    ]]>
</fx:Script>

<s:ComboBox id="comboBox" textInput="change(event)"
       dataProvider="{d}" labelField="name"/>

EDIT 2

Para establecer el color del borde desde actionscript, puede hacer lo siguiente:

comboBox.setStyle("borderColor","#ff0000"); // set the bordercolor to red

Si no necesita una verificación particular del texto insertado, simplemente puede configurar el cambio de propiedad en el ComboBox

        protected function index_change(event:IndexChangeEvent):void
        {
            if (comboBox.selectedIndex >= 0 )
                Alert.show("something selected")
            else
                Alert.show("nothing selected");

        }
        <s:ComboBox id="comboBox" dataProvider="{d}" labelField="name"
            change="index_change(event)"
             />

contestado el 03 de mayo de 12 a las 10:05

Hola, Marcx, gracias por tu respuesta, pero ¿puedes decirme qué debo escribir dentro de ese controlador de eventos de cambio para enviar un mensaje de validación al usuario? - trinu

No estoy seguro de haber entendido correctamente lo que necesita, pero puede hacer algo así ... (verifique la edición en mi respuesta) - Marcx

Marcx, gracias por responder de nuevo. Entendiste correctamente lo que estaba preguntando. Usé tu código, pero ahora el problema es que también usé change='indexChangeHandler(event)'; junto con textInput = "cambio (evento)", pero ahora, cuando no se selecciona nada, no se debe llamar al evento de cambio, pero actualmente se está llamando. Cómo detener eso. También podría ser más útil si me dice cómo dar un error de validación con un borde rojo en lugar de mostrarlo en Alerta. - trinu

Muchas gracias. Por último, no puedo usar un validador de cadenas para determinar si el valor ingresado por el usuario está en el proveedor de datos del cuadro combinado para poder dar origen al validador de cadenas. En realidad, tengo muchos cuadros combinados que se crean dinámicamente, por lo que cuando el usuario ingresa valores incorrectos en el cuadro combinado y presiona el botón Guardar, todos los errores de validación deben aparecer como en el validador de cadenas. - trinu

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.