1

私はsenchatouchで最初のアプリを作成しています。フォームの検証に問題があります。これはフォームです:

var form = new Ext.form.FormPanel({
        title: 'Activity',
        items: [{
            xtype: 'fieldset',
            items: [{
                xtype: 'textfield',
                name : 'sector',
                label: 'Sector',
                required: true
            },
            {
                xtype: 'selectfield',
                name : 'city',
                label: 'City',
                options: [
                {
                    text: '*',
                    value: '*'
                },
                {
                    text: 'First Option',  
                    value: 'first'
                },
                {
                    text: 'Second Option', 
                    value: 'second'
                },
                {
                    text: 'Third Option',  
                    value: 'third'
                }]
            },
            {
                xtype: 'textfield',
                name : 'nation',
                label: 'Nation',
                required: true
            },
            {
                xtype: 'toolbar',
                docked: 'bottom',
                layout: {
                    pack: 'center'
                },
                items: [{
                    xtype: 'button',
                    text: 'Cerca',
                    handler: function() {
                        formSettori.submit({
                            url: 'book.php',
                            method: 'GET',
                            success: function() {
                                Ext.Msg.alert('OK');
                            },
                            failure: function() {
                                Ext.Msg.alert('NO');
                            }
                        });
                    }
                },
                {
                    xtype: 'button',
                    text: 'Reset',
                    handler: function() {
                        form.reset();
                    }
                }]
            }]
        }]
    });

フォームには3つのフィールドしかありません:-activities -city -nation

全て必須項目です。活動と国は空であってはなりませんが、都市は*と等しくてはなりません

フィールドを制御するにはどうすればよいですか?ありがとう!

4

1 に答える 1

1

フォームの検証を行う方法は組み込まれていません。あなたはそれを自分でしなければなりません。

最も簡単な方法は、プライベートな Ext.form.Panel メソッドgetFieldsを使用して各フィールドをループし、それらが空でないことを確認することです。

var fields = form.getFields(),
    field, name, isEmpty;

for (name in fields) {
    field = fields[name];
    isEmpty = (!field.getValue() || field.getValue() == "");

    if (isEmpty) {
        field.addCls('x-invalid');
    } else {
        field.removeCls('x-invalid');
    }
}

フィールドが空の場合は、x-invalidクラスを追加します (スタイルを設定できるようにします)。

于 2012-04-23T17:20:37.630 に答える