Показать сообщение отдельно
  #1 (permalink)  
Старый 11.11.2010, 10:12
Аспирант
Отправить личное сообщение для DenQ Посмотреть профиль Найти все сообщения от DenQ
 
Регистрация: 28.08.2010
Сообщений: 57

Динамическое добавление полей в форме
В очередной раз всех приветствую. У меня проблемка. Мне нужно что б в моей формочке, поля для ввода появлялись динамически, при нажатии на кнопочку рядом, в этой же форме. Форму я сделал, кнопочку тоже, поля тоже. Поля для ввода я передаю как массив объектов. Нужно чтобы по нажатию на кнопочку появлялись новые поля... Но они не появляются, и в дереве ДОМа тоже... что посоветуете?

Идея была такая, что бы по нажатию, в массив, вносился очередной объект, содержащий сведения о полях и прочем.
В общем вот код, handler кнопочки начинается со 108 строки. Сорри за большой размер...
function formDisk() {
//    var NUM = 1;
//    function num(n){
//        n = n + 0;
        var el_form = new Array();
//        for(var i=0;i<n;i++){
            el_form[0] =                 {
                    xtype       : 'fieldset',
                    title       : 'Файл',
                    collapsible : true,
                    autoHeight  :true,
                    defaults    : {width: 210},
                    defaultType : 'textfield',
                    items :[
                            {
                                fieldLabel      : 'Имя',
                                allowBlank      : false,
                                name            : 'NAME'
                            },
                            {
                                xtype           : 'combo',
                                store           : getStore('type_file'),
                                mode            : 'local',
                                valueField      : 'name',
                                displayField    : 'name',
                                triggerAction   : 'all',
                //                allowBlank      : true,
                                fieldLabel      : 'Тип диска',
                                allowBlank      : false,
                                name            : 'TYPE'
                            },
                            {
                                fieldLabel      : 'Примечение',
                                name            : 'ABOUT'
                            }
                    ]
                }
//        }
//                return el_form;
//    }

    var form = new Ext.FormPanel({
            url : 'index.php?ajax=yes&query=insert&action=disk',
        header      : false,
        title       : 'Диск(добавить)',
//        width       : 500,
        labelWidth  : 120,
        frame       : true,
        defaults    : { width: 360 },
        defaultType : 'textfield',
        items:[
            {
                xtype       : 'fieldset',
                title       : 'Характеристики диска',
                collapsible : true,
                autoHeight  :true,
                defaults    : {width: 210},
                defaultType : 'textfield',
                items :[
                        {
                            fieldLabel      : 'Имя',
                            allowBlank      : false,
                            name            : 'NAME'
                        },
                        {
                            xtype           : 'combo',
                            store           : getStore('type_disk'),
                            mode            : 'local',
                            valueField      : 'name',
                            displayField    : 'name',
                            triggerAction   : 'all',
            //                allowBlank      : true,
                            fieldLabel      : 'Тип диска',
                            allowBlank      : false,
                            name            : 'TYPE'
                        },
                        {
                            border          : true,
                            xtype           : 'combo',
                            store           : getStore('group_disk'),
                            mode            : 'local',
                            valueField      : 'name_group',
                            displayField    : 'name_group',
                            triggerAction   : 'all',
                            fieldLabel      : 'Группа диска',
                            allowBlank      : false,
                            name            : 'GROUP'
                        },
                        {
                            fieldLabel      : 'Примечение',
                            name            : 'ABOUT'
                        }
//                        ,
//                        {
//                            id              : 'num_files',
//                            fieldLabel      : 'Количество файлов',
//                            name            : 'NUM_FILES',
//                            value           : 3
//                        }
                ]
            },
            el_form,
//            num(NUM),
            {
              xtype     : 'button',
              text      : 'Еще файл',
              width     : 100,
              handler : function(){
                                el_form[el_form.length] = {
                                xtype       : 'fieldset',
                                title       : 'Файл' + el_form.length,
                                collapsible : true,
                                autoHeight  : true,
                                defaults    : {width: 210},
                                defaultType : 'textfield',
                                items :[
                                        {
                                            fieldLabel      : 'Имя',
                                            allowBlank      : false,
                                            name            : 'NAME' + el_form.length
                                        },
                                        {
                                            xtype           : 'combo',
                                            store           : getStore('type_file'),
                                            mode            : 'local',
                                            valueField      : 'name',
                                            displayField    : 'name',
                                            triggerAction   : 'all',
                            //                allowBlank      : true,
                                            fieldLabel      : 'Тип диска',
                                            allowBlank      : false,
                                            name            : 'TYPE' + el_form.length
                                        },
                                        {
                                            fieldLabel      : 'Примечение',
                                            name            : 'ABOUT' + el_form.length
                                        }
                                ]
                            }
                     form.show();

              }
            }
        ],
        buttons: [
            {
                text: 'Reset',
                handler: function(){
                   form.getForm().reset();
                }
            },{
                text    : 'Добавить',
                handler: function() {
                    form.getForm().submit({
                        success: function(f,a){
//                            url:    'index.php?ajax=yes&action=adduser',
                            Ext.Msg.alert('Success', 'It worked');
                        },
                        failure: function(f,a){
    //                        Ext.Msg.alert('Warning', 'Error');
                            if (a.failureType === Ext.form.Action.CONNECT_FAILURE){
                                   Ext.Msg.alert('Failure', 'Server reported:'+a.response.status+' '+a.response.statusText);
                            }
                            if (a.failureType === Ext.form.Action.SERVER_INVALID){
                               Ext.Msg.alert('Warning', a.result.errormsg);
                            }
                        }
                    })
                }
            }]
    });
//    Ext.Msg.alert('info', Number(Ext.getCmp('num_files').value));
    return form;
}
Ответить с цитированием