0

私は現在、numbervalidatorを使用して、10進値を使用しているいくつかのフィールドを検証しようとしています。mxの例がどのように表示されるかを表示したいのですが(例: http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/validators/NumberValidator.html#includeExamplesSummary

有効にしましたが(以下をお読みください)、errorTipが表示されません。また、表示されるエラーメッセージは、フォームアイテム内ではなく画面の上部に表示されます。

<s:NumberValidator id="nv1" allowNegative="false" source="{field1}" property="text" fractionalDigits="3"  />
<s:NumberValidator id="nv2" allowNegative="false" source="{field2}" property="text" fractionalDigits="3"  />

formitemスキンをオーバーライドし、showErrorTipを(contentGroupで)trueに設定するという提案を読みましたが、影響はありませんでした。また、errorTextDisplayを削除して、表示される他のエラーメッセージを停止しようとしましたが、これも影響はありませんでした。

既存のエラーメッセージをformItem(下)に表示できれば幸いです。以下に私のビューの基本構造を含めました。

<s:Scroller width="100%" height="100%">
    <s:Group>
        <s:Form id="myForm" width="100%">
            <s:layout>
                <s:FormLayout gap="0"/>
            </s:layout>
            <s:HGroup width="100%">
                <s:FormItem label="Field1" width="50%">
                    <s:TextInput id="field1" width="100%" text="{data.field1}" restrict="0-9." />
                </s:FormItem>
                <s:FormItem label="Field2" width="50%">
                    <s:TextInput id="field2" width="100%" text="{data.field2}" restrict="0-9." />
                </s:FormItem>
            </s:HGroup>
        </s:Form>
    </s:Group>
</s:Scroller>

これは非常に長い形式です(他のフィールドは省略しています)。そのため、スクローラーを使用し、2列のレイアウトで入力を表示しています。

4

3 に答える 3

1

これを試してみてください。これでエラーメッセージを表示するトリックが実行されます。バリデーターにトリガーを追加し、トリガーする必要のあるイベントについて言及する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<s:Application
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Declarations>
        <s:NumberValidator id="nv1" allowNegative="false" source="{field1}" property="text" fractionalDigits="3"  
                           trigger="{validate}" triggerEvent="click" requiredFieldError="No use"/>
        <s:NumberValidator id="nv2" allowNegative="false" source="{field2}" property="text" fractionalDigits="3" 
                           trigger="{validate}" triggerEvent="click" requiredFieldError="No use"/>
    </fx:Declarations>


    <s:Scroller width="100%" height="100%">
        <s:Group>
            <s:Form id="myForm" width="100%">
                <s:layout>
                    <s:FormLayout gap="0"/>
                </s:layout>
                <s:VGroup width="100%">
                    <s:FormItem label="Field1" width="50%">
                        <s:TextInput id="field1" width="100%" text="11" restrict="0-9." />
                    </s:FormItem>
                    <s:FormItem label="Field2" width="50%">
                        <s:TextInput id="field2" width="100%" text="22" restrict="0-9." />
                    </s:FormItem>
                </s:VGroup>
                <s:Button id="validate" label="Validate"/>
            </s:Form>
        </s:Group>
    </s:Scroller>
</s:Application>
于 2012-11-16T04:42:46.680 に答える
0

問題の重要な部分であることが判明したことについて言及しなかったことが一因となって、私は自分の質問に対する解決策を見つけることができました。フォームスキンのデフォルトのレイアウトはかなりひどいものだったので、それぞれStackedFormSkinとStackedFormItemSkinに切り替えました。

ただし、スタックスキンはerrorTextDisplayをformitemからフォームスキンに移動します。私がやらなければならなくなったのは、自分のスキンを作成することでした(それぞれの積み重ねられたスキンからc + p'd)。

フォームスキンでは、FormSkinからerrorTextDisplay要素を削除し、元のFormItemSkinからerrorTextDisplayをコピーし、テキスト入力の下に表示されるようにいくつかの変更を加えました(以下のように)。

<s:RichText id="errorTextDisplay" includeIn="errorStates"
            fontStyle="italic" fontWeight="normal" color="0xFE0000"
            left="contentCol:0" right="helpCol:10"
            bottom="row3:10" baseline="row3:0" 
            maxDisplayedLines="-1"/>

row3を追加のConstraintRowとして追加する必要があります。

基本的に、上記の変更によりStackedFormスキンの利点が得られますが、エラーの原因となった入力の横にエラーメッセージが引き続き表示されることを意味します。

于 2012-11-19T15:25:40.680 に答える
0

アイコンで異なるタイプのエラーが発生した理由は、とを使用<s:Form>したためです<s:FormItem>。に変更する<mx:Form><mx:FormItem>、強調表示されたボックスとツールチップのエラーで古い種類のエラーが発生します。以下のサンプルを試してください。

<?xml version="1.0" encoding="utf-8"?>
<s:Application
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Declarations>
        <s:NumberValidator id="nv1" allowNegative="false" source="{field1}" property="text" fractionalDigits="3"  />
        <s:NumberValidator id="nv2" allowNegative="false" source="{field2}" property="text" fractionalDigits="3"  />
    </fx:Declarations>


    <s:Scroller width="100%" height="100%">
        <s:Group>
            <mx:Form id="myForm" width="100%">
                <s:HGroup width="100%">
                    <mx:FormItem label="Field1" width="50%">
                        <s:TextInput id="field1" width="100%" text="1" restrict="0-9." />
                    </mx:FormItem>
                    <mx:FormItem label="Field2" width="50%">
                        <s:TextInput id="field2" width="100%" text="2" restrict="0-9." />
                    </mx:FormItem>
                </s:HGroup>
            </mx:Form>
        </s:Group>
    </s:Scroller>
</s:Application>
于 2012-11-15T10:14:13.827 に答える